[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: