我测试过这个:
#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/