1
我在c中實現了一個shell,並且im很難將命令的輸出重定向到一個文件。 當我將輸出發送到一個文件,它似乎工作,但該文件未打開,當我運行ls -l命令它讓我看到以下內容:從命令行將輸出重定向到C文本文件
---------x 1 warp staff 441 Nov 4 20:15 output.txt
這是我的一些代碼部分
pid = fork();
if(pid == 0)
{ /* child process */
if(redirFlag)
{
int fdRedir = open(redirectName, O_WRONLY | O_CREAT);
if(fdRedir < 0){
perror("Can't Open");
exit(1);
}
if(dup2(fdRedir, STDOUT_FILENO) == -1){
perror("dup2 failed");
exit(1);
}
}
execvp(supplement[0], supplement);
/* return only when exec fails */
perror("exec failed");
exit(-1);
+1:嚴格地說,原型['開放的()'](http://pubs.opengroup.org/onlinepubs/9699919799/functions/ open.html) 是'int open(const char * path,int oflag,...);',但最終結果與您所說的幾乎相同:如果指定了'O_CREAT',則需要指定第三個參數太。沒有這一點,它是不確定的價值被視爲模式;從結果看來,答案似乎是'1'。 –
@JonathanLeffler感謝您提供更嚴格的原型,我更新了答案。 –