2012-03-12 7 views

답변

4

execl은 현재 프로세스를 대체합니다. 서브 루틴이 아닙니다. 대신 system()을 사용해보세요.

+0

'system'가 불량입니다. 'execl' 전에'fork '합니다. –

+0

그러나 fork는이를 두 개의 프로세스로 나눕니다. 두 프로세스는 병렬로 실행되지만 동일한 파일 핸들에 출력을 표시합니다. 이것은 출력 중간에 표제가 표시 될 수 있습니다. 시스템이 좋지 않다는 것에 동의하지만 포크가 더 나아진 것을 볼 수 없습니다. – Mark

+0

하나의 프로세스 (일반적으로 자식 프로세스)는 부모 프로세스와 동일한 작업을 수행하는 대신'execl'을 호출합니다. 따라서 출력의 복사본 2 개를 얻지 못합니다 (execl'의 실패를 무시하고 즉시 실패하면'_exit'). –

4

실행하자마자 exec*()귀하의 응용 프로그램은 기존을 중지합니다. 둘 이상의 외부 프로세스를 실행하려면 fork()이 필요합니다.

1

먼저 포크를해야합니다.

한번에 실행

int main(int argc, char* argv[]) 
{ 
    if(vfork() == 0) 
     execl("/bin/echo","echo","list ","of", "files:\n",NULL); 
    if(vfork() == 0) 
     execl("/bin/ls","ls","-al",NULL); 
    return 0; 
}