2012-01-13 3 views
2

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

Я попытался с помощью трубопроводов, розетка и клиентов соединения, но оно не может быть полезным для простой программы работает C, где только зсапЕ() и Е() используется

Примеры программ: Program1.c

#include<stdio.h> 
int main(int argc,char *argv[]) 
{ 
    int a; 
    while(1) 
    { 
    scanf("%d",&a); 
    printf("%d",a); 
    } 
    return 0; 
} 

program2.c

#include<stdio.h> 
int main(int argc,char *argv[]) 
{ 
    int a; 
    while(1) 
    { 
    scanf("%d",&a); 
    printf("%d",a); 
    } 
    return 0; 
} 

Моя цель состоит в том, чтобы соединить стандартный ввод и стандартный вывод program1.c с стандартным вводом и стандартным выводом из program2.c с помощью третьего Java или C программы

ответ

1

Вы должны использовать fork и exec
Написать третью программу C, которая откроет две трубы (с помощью pipe). Это дает вам 4 дескриптора файла (2 входа, 2 выхода).
Затем он вилки - потом ребенок запускает программу 1, а родительская программа2 (или наоборот - не имеет значения).
Каждый из детей закроет 2 дескриптора файла и останется с одним входом и одним выходом (но не с одним и тем же трубопроводом). Они также должны закрыть стандартный ввод и вывод.
Затем используйте функцию dup2, чтобы сделать fds трубы равным 0 и 1.
Теперь у вас есть два процесса: один stdin, соединенный трубой с другим выходом stdout, и наоборот.
Последний этап заключается в использовании exec, чтобы выполнить прогон program1 и program2.

+0

Я хочу, чтобы получить образец третьей программы для соединения двух программ. Я не могу получить программный код для запуска двух программ одновременно. – Terminators

2

По сути, вы хотите сделать что-то вроде этого:

  • «программы3» создает программу pipe
  • 3 вызова fork, и у ребенка, изменяется из Ф.Д. pipe «s для stdout, затем exec 's Program2;
  • Программа 3 затем изменяет вне pipe для stdin и exec «s Program1
+0

Да, сэр/мама, я хочу сделать что-то вроде этого, только хочу получить схему кода, который будет использоваться в случае Java/C – Terminators

Смежные вопросы