C вызывает подпроцесс и вводит в стандартный ввод и читает его стандартный вывод

Я не нашел удовлетворительного ответа, поэтому извините, если на этот вопрос уже был дан ответ.

По сути, я хотел бы иметь возможность вызывать программу и вводить некоторые данные в ее стандартный ввод и читать его стандартный вывод из программы C.

Я хотел бы подражать этому:

данные кота.txt | программа

где фиксируется вывод программы, а данные записываются в стандартный ввод указанной программы.

Это немного похоже на этот вопрос, но на C вместо python, и мне не нужно, чтобы подпроцесс жил вечно, просто выполнялся с входными данными, выплевывал выходные данные и умирал.

Многократно записывайте в STDIN и читайте STDOUT подпроцесса без его закрытия


person David    schedule 03.08.2016    source источник
comment
Как запустить подпроцесс?   -  person Amin Negm-Awad    schedule 03.08.2016
comment
Я не знаю, я ожидал, что это будет частью ответа (открытие, вилка и т. д.)   -  person David    schedule 03.08.2016
comment
Возможный дубликат альтернативы popen()   -  person Amin Negm-Awad    schedule 03.08.2016
comment
Первый ответ содержит пример создания подпроцесса с popen()/exec…() и использования канала для связи. В качестве примечания: ваш вопрос звучит немного, если у вас есть данные заранее и вы хотите получить данные после завершения процесса. В таком случае просто запишите входные данные в файл, запустите подпроцесс из этого файла и позвольте ему записать в файл и, наконец, прочитать файл после завершения процесса. Может быть, это проще в вашем сценарии.   -  person Amin Negm-Awad    schedule 03.08.2016
comment
Конечно, fork(), а не popen().   -  person Amin Negm-Awad    schedule 03.08.2016