bisa kok. kalau anda ingin membalik fungsinya (child menjalankan more,
parent ls) maka input outputnya dibalik juga. child menangkap output,
parent mengeluarkan.
--
sh
At 03:04 PM 2/28/2001, you wrote:
>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]