2012-05-01 3 views
0

명령을 실행해야하지만, 응용 프로그램을 종료 할 때까지 응용 프로그램을 잠그지 마십시오 (예 : system() 기능). 이 작업을 수행하는 방법? 어떤 도움이라도 대단히 감사합니다. 미리 감사드립니다.명령을 실행하는 방법과 응용 프로그램 종료를 기다리지 않습니까?

+1

부모 프로세스가 종료되면 자식에게 SIGHUP을 보냅니다. 아이가 계속 실행되기를 원한다면, 아이는 신호 처리를 사용하여 SIGHUP을 무시하거나 nohup을 사용하여 프로그램을 실행해야합니다. – cdarke

답변

7

fork()을 사용하여 새 프로세스를 만들고 exec*()을 사용하여 새 응용 프로그램으로 바꿉니다.

2
pid_t pid; 

if ((pid = fork()) < 0) 
    ...fork failed... 
else if (pid == 0) 
{ 
    ...create command line in array of char pointers argv... 
    ...sort out I/O -- redirect stdin from /dev/null?... 
    execvp(argv[0], argv); 
    ...report exec failed on stderr... 
    _exit(126); 
} 
...parent process...gets on with life... 
관련 문제