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感谢您提供更严格的原型,我更新了答案。 –