Eine Weiterleitung stdout mit close
und open
:dup2 vs schließen + offen für stdout Umleitung
close(STDOUT_FILENO);
int fd = open("log", O_RDWR);
printf("My output\n");
von Umleitung unterscheidet durch dup2
:
int fd = open("log", O_RDWR);
dup2(fd, STDOUT_FILENO);
printf("My output\n");
mit strace
ich sehe, dass im ersten Fall write
kehrt EBADF
:
$ strace -e write ./a.out
write(1, "My output\n", 10) = -1 EBADF (Bad file descriptor)
Wie unterscheidet sich dup2
von open
+ close
?
Ich habe diese Frage gestellt, nachdem ich verifiziert habe, dass 'fd', das von' open' zurückgegeben wurde, gleich 'STDOUT_FILENO' ist. Die Lieferung eines Signals ist ja möglich, ist aber nicht der Fall. Da ist niemand von Ihrem Szenario hier, in dem die beiden Methoden unterschiedlich sind? – MirkoBanchi