将stdout重定向到文件描述符似乎不起作用,为什么?

时间:2017-01-02 02:17:18

标签: c linux file redirect stdout

我测试了这个:

#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

不像我预期的那样:写操作应写入&#34; testdup.txt&#34;文件。 为什么它没有用?

1 个答案:

答案 0 :(得分:2)

@TobyB在这里是正确的。这段代码适合我:

#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的参数顺序不正确。