2013-04-10 2 views
0

호기심이 아닙니다. 두 개 이상의 Linux 명령을 실행하는 가장 쉬운 방법은 무엇일까 궁금합니다. 의는 다음의 예를 보자 :하나의 exec 함수에있는 여러 터미널 명령

free > tmp1 && uptime > tmp2 && cat tmp1 tmp2 > result && rm tmp1 tmp2 

지금은 C에서 같은를 달성하기 위해 노력했다 ++ (목적이있는 한 그 일을 우리가 한 라인 터미널에서 동일을 달성 할 수있는 방법

1) free > tmp1 
2) uptime > tmp2 
3) cat tmp1 tmp2 > result 
4) rm tmp1 tmp2 

execlp) 예 :

pid_t child; 
child = fork(); 
if (child > 0) { 
execlp("free", "free", ">", "tmp1", "&&", "uptime", "uptime", ">", "tmp2", "cat", "cat", "tmp1", "tmp2", ">", "result", "&&", "rm", "rm", "tmp1", "tmp2", NULL); 
} 

내가 알기 쉽게 사진을 얻을 수 있습니다. 그것은 작동하지 않는다고 말할 필요도없이, 단지 첫 번째 명령을 실행 한 다음 죽습니다. 어쨌든 요점까지.

fork 된 프로세스 내에서 별도의 execlp 행을 만든 다음 루프에서 자식 프로세스를 "플러시"해야합니까? 아니면 하나의 execlp 라인에서 동일한 작업을 수행 할 수있는 대안이 있습니까?

가능한 경우 동일한 결과를 얻을 수있는 방법을 보여주세요.

감사합니다.

+0

하나'execlp' 이상을 사용할 수없는 이유가 있습니까? 또한,'>'이 처음에는'execlp'에서 작동하는지 확신합니까? – Xymostech

+0

구체적인 이유가 없으므로 옵션을 살펴보고 싶습니다. 아니요, 전혀 모르겠습니다. 그래서 제가 묻고있는 것입니다. 아직도 배우기. – dusz

+0

약간의 최적화 : "무료"결과 && 업타임 "결과" – loentar

답변

3

"프로그램 실행"과 "시스템의 명령 인터프리터에 텍스트 입력"을 혼란스럽게합니다. 귀하의 통역사는 ">""&&"으로 무엇을해야할지 알고 있습니다. 그러나 그들은 실행할 수있는 프로그램이 아닙니다.

사용해보십시오 system()

system("free > tmp1 && uptime > tmp2 && cat tmp1 tmp2 > result && rm tmp1 tmp2"); 
+0

다시 한번 감사드립니다. :) – dusz