2015-01-21 1 views

답변

1

프로세스 관계는 매우 약하다. SIGCHLD은 없습니다. SIGHUP의 사망을 피하기 위해 터미널 분리가 필요하지 않습니다. 실제로, 부모 프로세스는 여러 가지 환경 요소가 자동으로 자식에게 복사 될 수있는 한 중요합니다.

새 프로세스 그룹에서 프로세스 시작을 보거나 새 작업 개체에 첨부 할 수 있습니다. CREATE_NEW_PROCESS_GROUP 플래그를 참조하십시오.

1

하나의 옵션은 system() 명령을 호출하는 것입니다. 이 내용은 <cstdlib> (일명 <stdlib.h>)에서 확인할 수 있습니다.

예 :

#include <stdlib.h> 

int main(int argc, char *argv[]){ 
    // Open the Window's Calculator: 
    system("C:/Windows/system32/calc.exe"); 
    return 0; 
} 

당신은 통과 할 수는 system() 매개 변수로 (당신이 명령을 실행하는 데 필요한 권한이 가정)하고 싶은 명령 뭐든간에.

이 기능은 Linux/Unix 시스템에서도 작동합니다.


편집 :system()에 전화를 구현하기 전에, 당신이 그것에 대해 this write-up을 확인 할 수 있습니다. 어떤 사람들은 system()을 사용하는 것이 안전하지 않거나 나쁜 습관이라고 생각합니다. 그러나 무관 한 프로그램을 시작하기 위해 나는 개인적으로 system()이 좋은 해결책이라고 믿습니다.

명령을 사용하여 호출하기 전에 system()을 사용할 수 있는지 확인하는 것도 좋습니다. 일부 시스템에서는 쉘/명령 프롬프트를 생성 할 수 없게 될 수도 있습니다. 이 확인하려면 다음을 수행 할 수 있습니다 : Windows에서

if(system(NULL)){ 
    // spawning a shell is allowed 
    system(commandToExecute); 
    return 0; 
}else{ 
    // spawning a shell is prohibited 
    return ERROR_NO_SHELL; 
} 
관련 문제