[英]redirecting output of execvp into a file in 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不起作用,但是由於您不處理錯誤,因此看不到它。
嘗試這個:
char *const args[] = {"ls", NULL};
execvp(args[0], args);
/* If this is reached execvp failed. */
perror("execvp");
或者,您可以使用復合文字:
execvp("ls", (char *[]){"ls", NULL});
第二個想法:嘗試正常運行事物,而不需要重定向,看看它是如何工作的。
在execvp之前關閉fd。 因為除非execvp失敗,否則execvp之后的代碼永遠不會運行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.