RE: dup ve pipe.
Selam;
Şöyle olmaz mı? Process A , A1 i ve A2 yi yaratacağına Process A A1
i yaratsın sonra A1 de A2 yi (aslında A12 diyebiliriz :)
Nasıl olsa A2 nin A ile konuşacağı yok. Hem dup kullanmazsın.
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
int main(void) {
int fd[2], nbytes;
pid_t childpid;
char string[] = "Hello, world!\n";
char readbuffer[80];
pipe(fd);
childpid = fork();
if(childpid == 0) { /* child A1 */
close(fd[0]);
childpid = fork();
if (childpid == 0) { /* child A2 */
close(fd[1]);
nbytes = read(fd[0], readbuffer,
sizeof(readbuffer));
exit(0);
}
nbytes = read(fd[0], readbuffer, sizeof(readbuffer));
write(fd[1], string, (strlen(string)+1));
scanf("%s",readbuffer);
exit(0);
}else {
close(fd[0]); /* process A */
write(fd[1], string, (strlen(string)+1));
}
return(0);
}
-----Original Message-----
From: Halil Demirezen [mailto:halild@bilmuh.ege.edu.tr]
Sent: Wednesday, August 27, 2003 4:53 PM
To: Mehmet Türker
Cc: debian-user-turkish@lists.debian.org
Subject: Re: dup ve pipe.
Aslen baya bir acik yapmamin sebebi tam manasiyla soru isareti kalmasini
istemedigim icindi. Sanirim cok fazla acik yazinca da cok fazla soru
isareti oluyor :).
kisaca A process i A1 ve A2 processlerini spawn ediyor. A process i 0
numarali file descriptordan geleni A1 e gonderip A1 in A2 processinin 0
inci descriptoruna yazmasi gerekiyor. Bunu pipe kullanarak yapmak cok
genis bir sekilde kullaniliyor. Tabiki pipe in file descriptorlarinin
birine 0 nolu file descriptorunu iliskilendirmek lazim :)
Sanirim boyle daha acik, haklisin.
Iyi calismalar.
> close(0);
> dup2(0, fd[0]);
Reply to: