C เรียกกระบวนการย่อยและฉีด stdin และอ่าน stdout

ฉันไม่พบคำตอบที่น่าพอใจ ดังนั้นขออภัยหากมีคำตอบนี้มาก่อน

โดยพื้นฐานแล้วฉันต้องการเรียกใช้โปรแกรมและฉีดข้อมูลบางส่วนลงใน stdin และอ่าน stdout จากภายในโปรแกรม C

ฉันต้องการเลียนแบบสิ่งนี้:

cat data.txt | โปรแกรม

โดยที่เอาต์พุตของโปรแกรมถูกดักจับและข้อมูลถูกเขียนไปยัง stdin ของโปรแกรมดังกล่าว

มันเหมือนกับคำถามนี้เล็กน้อย แต่ใน C แทนที่จะเป็น python และฉันไม่ต้องการให้กระบวนการย่อยอยู่ตลอดไป เพียงแค่ดำเนินการกับข้อมูลที่ป้อนเข้า คายเอาต์พุตออกมาแล้วตาย

เขียนซ้ำไปยัง STDIN และอ่าน STDOUT ของกระบวนการย่อยโดยไม่ต้องปิด


person David    schedule 03.08.2016    source แหล่งที่มา
comment
คุณจะเริ่มกระบวนการย่อยได้อย่างไร?   -  person Amin Negm-Awad    schedule 03.08.2016
comment
ฉันไม่รู้ ฉันคาดหวังว่ามันจะเป็นส่วนหนึ่งของคำตอบ (popen, fork ฯลฯ )   -  person David    schedule 03.08.2016
comment
อาจซ้ำกับ popen() ทางเลือก   -  person Amin Negm-Awad    schedule 03.08.2016
comment
คำตอบแรกประกอบด้วยตัวอย่างของการสร้างกระบวนการย่อยด้วย popen()/exec…() และการใช้ไปป์ในการสื่อสาร ตามที่ทราบด้านข้าง: Q ของคุณอาจฟังดูเล็กน้อยหากคุณมีข้อมูลล่วงหน้าและต้องการรับข้อมูลกลับหลังจากกระบวนการเสร็จสิ้น ในกรณีเช่นนี้ เพียงแค่เขียนข้อมูลอินพุตลงในไฟล์ เริ่มกระบวนการย่อยจากไฟล์นั้น และปล่อยให้เขาเขียนลงในไฟล์ และสุดท้ายจะอ่านไฟล์หลังจากกระบวนการเสร็จสิ้น บางทีนี่อาจง่ายกว่าในสถานการณ์ของคุณ   -  person Amin Negm-Awad    schedule 03.08.2016
comment
แน่นอน fork() ไม่ใช่ popen()   -  person Amin Negm-Awad    schedule 03.08.2016