Используйте функцию POPEN(), чтобы запустить writer.py внутри вашей программы чтения:
https://linux.die.net/man/3/popen
POPEN функция возвращает FILE *, которые затем можно использовать с любым C буферной функцию ввода/вывода , Например:
#include <stdio.h>
#include <errno.h>
int main(int argc, char **argv) {
FILE *fp;
if((fp = popen("/path/to/writer.py", "r")) == NULL) {
// handle error in some way
perror("popen");
exit(1);
}
size_t numbytes;
char buffer[255];
// Here we read the output from the writer.py and rewrite it to
// stdout. The result should look the same as if you ran writer.py
// by itself.. not very useful. But you would replace this with code
// that does something useful with the data from writer.py
while((numbytes = fread(buffer, 1, sizeof(buffer), fp)) > 0) {
fwrite(buffer, 1, numbytes, stdout);
// should check for error here
}
pclose(fp);
exit(0);
}
PS: Я не скомпилировать или запустить эту программу, это просто пример, чтобы дать вам идею ... Но она должна работать. Также .. Я замечаю, что вы говорите writer.c в одном месте и writer.py в другом. Неважно, что написано на языке писателя. Пока имя пути программы, которое вы переходите к popen(), выводит вывод на stdout, он будет работать.
Одна программа или один процесс? Вы можете использовать одну программу, которая использует 'fork()' для разделения на процесс записи и чтения. – Barmar
Ваше название говорит о одном терминале? Вы знаете, что вы можете запускать несколько программ с одного терминала, не так ли? Запустите первую программу в фоновом режиме, затем запустите вторую. – Barmar
Как я могу запустить одну программу в фоновом режиме? Из приведенного выше примера, как я могу запустить writer.c, просто набрав ./reader.c в одном терминале –