0
重新導向的標準輸出與close
和open
:DUP2 VS緊密+開放標準輸出重定向
close(STDOUT_FILENO);
int fd = open("log", O_RDWR);
printf("My output\n");
從重定向不同通過dup2
:
int fd = open("log", O_RDWR);
dup2(fd, STDOUT_FILENO);
printf("My output\n");
與strace
我看到的是,在第一種情況下write
返回EBADF
:
$ strace -e write ./a.out
write(1, "My output\n", 10) = -1 EBADF (Bad file descriptor)
dup2
如何區別於open
+ close
?
我問過這個問題,確認'open'返回的'fd'等於'STDOUT_FILENO'。信號的傳遞是可能的,但事實並非如此。既然你沒有一個場景在這裏,那麼這兩種方法有什麼不同呢? – MirkoBanchi