0

为什么字数统计在下面的程序中输出 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;
}
4

1 回答 1

1

尝试使用 lseek(0, 0, SEEK_SET) 在 dup2() 后倒带标准输入。在您的代码中, wc 将尝试从文件末尾读取,显然不会有任何字节要读取。

于 2012-11-27T17:24:17.927 回答