2013-04-03 2 views
0
mkfifo fifo1 
mkfifo fifo2 
mkfifo fifo3 
xterm -e bash -c "cat <fifo1 & tee fifo2 fifo3" & 
xterm -e bash -c "cat <fifo2 & tee fifo1 fifo3" & 
xterm -e bash -c "cat <fifo3 & tee fifo1 fifo2" & 

위의 unix 명령을 C 프로그래밍에서 어떻게 실행하는지 알고 싶습니다. 나는 execl을 사용하려고 시도하지만 작동하지 않는 것 같습니다. 미리 감사드립니다. xterm 사용에 도움이 필요합니다

#include <stdio.h> 
#include <unistd.h> 
#include <stdlib.h> 

int main(){ 
int pid; 
char parmList[100]; 
int i=1; 

sprintf(parmList,"-e bash -c {cat <fifo%d & tee fifo%d fifo%d}",i,i+1,i+2); 


if ((pid = fork()) == -1) 
    perror("fork error"); 
else if (pid == 0) 
{ 
    execl("/usr/bin/xterm","xterm",parmList,NULL); 
} 

return 0; 

} 
+0

우선 사용,'execl' 인수가 _separate_ 프로그램을 원한다. 나는. 하나의 인자는''-e '', 하나는''bash' '등등이다. –

+0

배열을 사용하기 전에'char'가'NULL'- 종료되고,'memset'을 사용해야한다. –

+0

당신이 정말로'cat anishsane

답변

1

execv 시스템 호출 (execv man page) 모든

#include <stdio.h> 
#include <unistd.h> 
#include <stdlib.h> 

int main(){ 
    int pid; 
    int i=1; 
    char command[100]; 
    char * args[] = { 
     "-e", 
     "bash", 
     "-c", 
     NULL, 
     NULL 
    }; 
    sprintf(command, "{cat <fifo%d & tee fifo%d fifo%d}", i, i+1, i+2); 
    args[3] = command; 

    if ((pid = fork()) == -1) 
     perror("fork error"); 
    else if (pid == 0) 
     execv("/usr/bin/xterm", args); 
    return 0; 
} 
관련 문제