1
我測試了這一點:將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
並非如我所料:寫操作應該寫爲「testdup.txt」文件。 爲什麼它不起作用?
你爲什麼不檢查任何錯誤條件? –
如果'fd'已經在使用,那麼'dup2(x,fd)'首先關閉fd,然後使fd成爲x的一個副本。這不是你想要的。 –
交換dup2中的參數:dup2(fd,STDOUT_FILENO); – TonyB