我的代碼被粘貼在下面。dup2()阻止輸出
我正在嘗試使用dup2將我的輸出重定向到文件。
如果我用它來重定向它工作正常(如果我刪除評論),輸出在文件中,而不是在標準輸出。例如:ls>測試,導致ls輸出測試。
問題是ls,沒有>不輸出任何東西。如果我儘可能地離開評論輸出,儘管沒有重定向的能力。
重定向[0]是要麼<或>有或全無 重定向[1]該文件的路徑重定向到
命令是與所述命令的命令的PICES cstrings的陣列是以及
例如輸出 與代碼註釋
[email protected]:/home/majors/kingacev/ubuntumap/cop4610/proj1> ls
a.out myshell.c myshell.c~
[email protected]:/home/majors/kingacev/ubuntumap/cop4610/proj1>
與代碼未註釋
[email protected]:/home/majors/kingacev/ubuntumap/cop4610/proj1> ls
[email protected]:/home/majors/kingacev/ubuntumap/cop4610/proj1>
/*
if (!strcmp(redirect[0],">")){
if ((fd = open(redirect[1], O_RDWR | O_CREAT)) != -1)
dup2(fd, STDOUT_FILENO);
close(fd);
}
*/
if (command[0][0] == '/'){
int c = execv(command[0], commands);
if (c != 0){
printf("ERROR: command does not exist at path specified\n");
exit(0);
}
}
else if (!execv(path, commands)){
exit(0);
}
什麼是「重定向」,它是如何聲明的? –
char *重定向[2]; [0]具有>或<或notheing,並且[1]具有文件的路徑 – d0m1n1c
哦,並且您是否嘗試用調試程序逐步執行代碼? –