View Single Post
Old 02-05-2006, 17:58   #2
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da Abdujaparov
Salve a tutti, vorrei reindirizzare l'output su una pipe e poi reimpostarlo, per impostarlo sulla pipe credo si saperlo fare:

pipe(fd[2]);
close(1);
dup(fd[0]);

ora per riportare lo standard input al suo normale file descriptor cosa devo fare?
Grazie, ciao ciao.
Stiamo ovviamente parlando di programmazione su sistemi Unix/Linux . Non ho ben capito esattamente cosa devi fare di preciso, quindi non saprei bene cosa risponderti. Ti posto il codice per reindirizzare lo standard output su una pipe e poi rimettere a posto lo standard output.
Codice:
int fd_pipe[2];
int fd_out_bak;

pipe (fd_pipe);   /* ottiene i due descrittori della pipe */

fd_out_bak = dup (0);   /* salva il descrittore dello standard output */

dup2 (fd_pipe[1], 0);    /* fa puntare lo standard output sulla pipe di scrittura */

.... qui se scrivi sul descrittore 0 (output) scrivi in realtà sulla pipe ....

dup2 (fd_out_bak, 0);    /* rimette a posto lo standard output */

/* chiude tutti i descrittori */
close (fd_out_bak);
close (fd_pipe[0]);
close (fd_pipe[1]);
Fammi sapere se è quello che volevi fare. Se non è così, ti chiedo scusa perché allora non ho capito una mazza di quello che volevi fare.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso