繁体   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