簡體   English   中英

Fork / Dup2 / Exec無法與mkstemp一起使用

[英]Fork/Dup2/Exec not working with mkstemp

為什么在以下程序中字數輸出0 0 0?

int main(int argc, char **argv) {
    pid_t pid = fork();
    const char *data = "THIS IS MY DATA.";
if(pid == 0) {
    // Child Process
    char *tmpname = malloc(15);
    strcpy(tmpname, "/tmp/datXXXXXX");
    int f = mkstemp(tmpname);
    //int f = open("tmpfile", O_RDWR | O_CREAT, S_IRWXU);
    if(f == -1) {
        perror("");
        return;
    }
    int written = write(f, data, strlen(data));
    dup2(f, STDIN_FILENO);
    close(f);
    char *wcargs[5] = {"wc", NULL};
    execvp("wc", wcargs);
    fprintf(stderr, "ERROR");
}
return 1;
}

嘗試使用lseek(0,0,SEEK_SET)在dup2()之后倒回stdin。 在您的代碼中,wc將嘗試從文件末尾讀取,並且顯然不會讀取任何字節。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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