halo semua,

dibawah ada program yang akan membuat anonymous-pipe utk menghubungkan
dua proses. (misal proses 1="ls -l /etc" dan proses 2="more")
        
        char *argv1[] = {"more", NULL};
        char *argv2[] = {"ls", "-l", "/etc", NULL};     

        if (fork()==0)
        {       
                pipe(p);                
                if (fork()==0)
                {       
                        /*child*/

                        close(p[0]);
                        close(1); /*tutup stdout*/
                        dup(p[1]);
                        execvp(argv2[0], argv2); /*ls*/
                } else 
                {
                        /*parent*/

                        close(p[1]);
                        close(0); /*tutup stdin*/
                        dup(p[0]);
                        execvp(argv1[0], argv1); /*more*/
                }
         } else 
         {
                wait(NULL);
         }   

dalam program diatas:
        child menjalankan "ls", dan
        parent menjalankan "more". --> program jalan
 
nah, yang jadi masalah, kalau dibalik:
        child menjalankan "more", dan
        parent menjalankan "ls". --> program setelah jalan, maka input
dari shell prompt tidak ditampilkan lagi ke layar.

yang menjadi pertanyaan saya mengapa hal tsb terjadi, apakah ada kesalahan
dalam kode sumber diatas?

mohon penjelasan dari rekan-rekan.

thanks in advance...


--------------------------------------------------------------------------------
Utk berhenti langganan, kirim email ke [EMAIL PROTECTED]
Informasi arsip di http://www.linux.or.id/milis.php3
Pengelola dapat dihubungi lewat [EMAIL PROTECTED]

Kirim email ke