exec() 및 system() 시스템 호출

exec() 및 system() 시스템 호출

Unix에서는 exec()가 실행 후 반환되지 않지만 system()은 상황에 따라 반환될 수도 있고 반환되지 않을 수도 있다는 것을 이해합니다. 그러나 exec() 시스템 호출이 반환되지 않는 이유와 Unix OS에서 exec() 및 system()이 왜 설명되는지 설명할 수 있는 사람이 있습니까?

답변1

system()은 fork() + exec() + wait()와 동일합니다. 즉, 프로세스가 system() 함수를 실행할 때 새 프로세스를 만들고 해당 프로세스가 끝날 때까지 기다립니다. 새 프로세스는 자체 환경에서 명령을 실행하고 완료되면 호출자에게 하위 프로세스에 대한 신호가 전달됩니다.

더 많은 정보를 알고 싶다면man exec man system

"exec는 현재 프로세스 이미지를 새 프로세스 이미지로 바꿉니다." 즉, 종료할 때 호출자가 새 프로세스가 되었기 때문에 호출자도 종료된다는 의미입니다.

답변2

이는 현재 실행 중인 프로세스를 바이너리 프로그램의 정보로 바꾸는 Unix 운영 체제의 시스템 호출입니다.

관련 정보