我测试过这个:

#include<unistd.h>
#include<fcntl.h>
int main()
{
    int fd=open("./testdup.txt",O_CREAT|O_RDWR,0666);
    dup2(STDOUT_FILENO,fd);
    write(STDOUT_FILENO,"mymy\n",5);
    close(fd);
    return 0;
}

编译并运行它,它仍然可以打印
mymy

不是我期望的那样:写操作应该写入“testdup.txt”文件。
为什么没用?

最佳答案

@托比在这里是对的。此代码对我有效:

#include <unistd.h>
#include <fcntl.h>

int main(void)
{
    int fd = open("./testdup.txt", O_CREAT | O_RDWR, 0666);
    dup2(fd, STDOUT_FILENO);
    write(STDOUT_FILENO, "mymy\n", 5);
    close(fd);

    return 0;
}

dup2的参数顺序在程序中不正确。

关于c - 将stdout重定向到文件描述符似乎不起作用,为什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41420713/

10-13 08:22