簡體   English   中英

將execvp的輸出重定向到C中的文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM