xfulviox
04-06-2003, 18:23
qualcuno è un mago con pipe e dup?
non riesco a capire come avviene la redirezione di stdin e stdout su pipe...
ad esempio:
main()
{
int pid, fd[2];
char msg[9]="hwupgrade";
pipe(fd);
pid=fork();
if(!pid)
{
close(fd[0]);
close(1);
dup(fd[1]);
close(fd[1]);
write(1, msg, sizeof(msg));
close(1);
}
else ecc ecc...
}
non capisco perché:
1)chiude l'estremità della pipe dedicata alla lettura : close(fd[0])
2)chiude lo stdout
3)duplica il descrittore dell'estremità della pipe riservata alla scrittura
4)chiude l'estremità della pipe riservata alla scrittura (???)
write(1, msg, sizeof(msg)); <<<--- dovrebbe scrivere su stdout... ma... non è chiuso????
:muro:
non riesco a capire come avviene la redirezione di stdin e stdout su pipe...
ad esempio:
main()
{
int pid, fd[2];
char msg[9]="hwupgrade";
pipe(fd);
pid=fork();
if(!pid)
{
close(fd[0]);
close(1);
dup(fd[1]);
close(fd[1]);
write(1, msg, sizeof(msg));
close(1);
}
else ecc ecc...
}
non capisco perché:
1)chiude l'estremità della pipe dedicata alla lettura : close(fd[0])
2)chiude lo stdout
3)duplica il descrittore dell'estremità della pipe riservata alla scrittura
4)chiude l'estremità della pipe riservata alla scrittura (???)
write(1, msg, sizeof(msg)); <<<--- dovrebbe scrivere su stdout... ma... non è chiuso????
:muro: