를 execl과 실행할 수 없습니다?두 번
Q
두 번
-1
A
답변
4
execl은 현재 프로세스를 대체합니다. 서브 루틴이 아닙니다. 대신 system()
을 사용해보세요.
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;
}
'system'가 불량입니다. 'execl' 전에'fork '합니다. –
그러나 fork는이를 두 개의 프로세스로 나눕니다. 두 프로세스는 병렬로 실행되지만 동일한 파일 핸들에 출력을 표시합니다. 이것은 출력 중간에 표제가 표시 될 수 있습니다. 시스템이 좋지 않다는 것에 동의하지만 포크가 더 나아진 것을 볼 수 없습니다. – Mark
하나의 프로세스 (일반적으로 자식 프로세스)는 부모 프로세스와 동일한 작업을 수행하는 대신'execl'을 호출합니다. 따라서 출력의 복사본 2 개를 얻지 못합니다 (execl'의 실패를 무시하고 즉시 실패하면'_exit'). –