我测试了这个:
#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;文件。 为什么它没有用?
答案 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的参数顺序不正确。