Saya mencoba mencari di internet, tetapi hampir tidak ada sumber daya. Contoh kecil sudah cukup.
EDIT Maksud saya, dua program C yang berbeda berkomunikasi satu sama lain. Satu program harus mengirimkan "Hai" dan yang lainnya akan menerimanya. Sesuatu seperti itu.
ls | grep ".o"
? Mungkin penjelasan lebih lanjut tentang apa yang Anda maksud akan membantu ...Jawaban:
Pipa biasa hanya dapat menghubungkan dua proses terkait. Itu dibuat oleh suatu proses dan akan hilang ketika proses terakhir menutupnya.
Sebuah pipa bernama , juga disebut FIFO untuk perilakunya, dapat digunakan untuk menghubungkan dua proses yang tidak berhubungan dan ada secara independen dari proses; artinya itu bisa ada bahkan jika tidak ada yang menggunakannya. FIFO dibuat menggunakan
mkfifo()
fungsi perpustakaan.Contoh
penulis. c
pembaca.c
Catatan: Pemeriksaan kesalahan dihilangkan dari kode di atas untuk kesederhanaan.
sumber
open()
pembaca di dalam lingkaran. Namun +1 karena Anda memberikan contoh dua program.Dari Membuat Pipa di C , ini menunjukkan kepada Anda bagaimana membuat program untuk menggunakan pipa. Jika Anda tidak ingin melakukan fork (), Anda bisa menggunakan pipa bernama .
Selain itu, Anda bisa mendapatkan efek
prog1 | prog2
dengan mengirimkan outputprog1
ke stdout dan membaca daristdin
dalamprog2
. Anda juga dapat membaca stdin dengan membuka file bernama/dev/stdin
(tapi tidak yakin portabilitasnya).sumber
Dan baca:
Tapi, saya pikir itu
fcntl
bisa menjadi solusi yang lebih baiksumber
Apa yang ditulis satu program ke stdout dapat dibaca oleh program lain melalui stdin. Jadi sederhananya, menggunakan c, tulis
prog1
untuk mencetak sesuatu menggunakanprintf()
danprog2
membaca sesuatu menggunakanscanf()
. Lalu lari sajasumber
Berikut contohnya :
Langkah-langkah penting dalam program ini adalah:
popen()
panggilan yang menetapkan hubungan antara proses anak dan pipa di orangtua.fprintf()
panggilan yang menggunakan pipa sebagai file biasa untuk menulis ke stdin proses anak atau membaca dari stdout.pclose()
panggilan yang menutup pipa dan menyebabkan proses anak untuk mengakhiri.sumber
Pertama, minta program 1 untuk menulis string
stdout
(seolah-olah Anda ingin muncul di layar). Kemudian program kedua harus membaca string daristdin
, seolah-olah pengguna sedang mengetik dari keyboard. lalu kamu lari:sumber
Jawaban ini mungkin berguna untuk karyawan Google di masa mendatang.
Anda dapat menemukan contoh panggilan pipa dua arah lanjutan di sini .
sumber