2012-01-13 2 views
2

두 번째 간단한 C 프로그램의 입력과 출력을 세 번째 Java/C 프로그램을 인터페이싱하여 동시에 연결하는 방법에 대해 알아야합니다.두 개의 동시 C 프로그램 연결

나는 배관, 소켓과 클라이언트 연결에 의해 시도했다 그러나 그것은

샘플 프로그램 사용되는 간단한 실행 C 프로그램에만 scanf와()과의 printf()에 대한 도움이 될 수 없습니다 : 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; 
} 

내 목표는 도움을 program2.c의 표준 입력과 표준 출력으로 program1.c의 표준 입력과 표준 출력을 연결하는 것입니다 세 번째 Java 또는 C 프로그램

답변

1

의 당신은 forkexec
이 (pipe 사용) 두 개의 파이프를 열 것입니다 세 번째 C 프로그램을 작성 사용해야합니다. 이것은 4 개의 파일 기술자 (2 입력, 2 출력)를 제공합니다.
그러면 fork - 자식이 나중에 program1을 실행하고 부모 program2가 실행됩니다 (또는 그 반대 -는 중요하지 않음).
각 자식은 2 개의 파일 설명자를 닫고 하나의 입력과 하나의 출력으로 남아 있지만 (동일한 파이프가 아님) 표준 입력 및 출력도 닫아야합니다.
dup2 함수를 사용하여 파이프 fds를 0과 1이되게하십시오.
이제는 파이프를 통해 파이프로 연결된 두 개의 프로세스가 있고 그 반대도 마찬가지입니다.
마지막 단계는 exec을 사용하여 program1program2을 실행하는 것입니다.

+0

나는 두 개의 프로그램을 연결하는 세 번째 프로그램의 샘플을 얻을합니다. 두 프로그램을 동시에 실행하는 프로그램 코드를 가져올 수 없습니다. – Terminators

2

기본적으로, 당신은 이런 식으로 뭔가를하고 싶은 것 :

  • 는 "Program3"는 pipe
  • 프로그램 3 호출 fork를 생성하고, 자녀에 대한 pipe의 FD를 변경 stdout이면 exec 님의 프로그램 2;
  • 프로그램 3은 밖으로 변경 stdinpipeexec의 프로그램 1
+0

예 선생님/엄마 나는 이것과 같은 것을하고 싶다 Java/C의 경우에 사용될 코드의 개요를 원한다. – Terminators

관련 문제