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.