我不知道我做错了......但这里是正在执行的代码片段:重定向execvp的输出到一个文件用C
if (fork() == 0)
{
// child
int fd = open(fileName, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR);
dup2(fd, 1); // make stdout go to file
execvp("ls","ls");
close(fd);
exit(0);
}
if(wait(&status) == -1)
{
printf("ERROR REDIRECT\n");
}
fileName
被创建,但有里面什么都没有。我做错了什么?
您没有正确调用'execvp'。 – dreamlax 2012-01-30 20:20:05
您是否尝试过没有'dup2'的完全相同的代码?它应该打印到标准输出。这个测试可以帮助我们关注这个问题。 – ugoren 2012-01-30 20:56:44
您是否考虑过执行命令“ls> $ filename”? – dbeer 2012-01-30 21:34:40