나는 exec ()가 Unix에서 실행 된 후 반환되지 않는 반면 system ()은 상황에 따라 반환되지 않습니다. 그러나 누구나 exec () 시스템 호출이 반환되지 않는 이유와 Unix 운영 체제에서 exec ()와 system ()의 차이점을 설명 할 수 있습니다.
댓글
응답
system ()은 fork () + exec () + wait (); 이것은 프로세스가 system () 함수를 실행할 때 새로운 프로세스를 생성하고이 프로세스의 끝을 기다린다는 것을 의미합니다. 새 프로세스는 자체 환경에서 명령을 실행하고 완료되면 호출자가 자식 신호를받습니다.
추가 정보 man exec
man system
“exec는 현재 프로세스 이미지를 새 프로세스 이미지로 바꿉니다.”이는 호출자가 새 프로세스가되면서 호출자가 종료 될 때도 종료됨을 의미합니다.
댓글
- 저기 ' 그것보다 조금 더 많습니다.
system()
는 실제로 기본 셸을exec()
하고 처리 할 문자열을 전달하므로 파이프 라인 및 기타 셸 기능을 사용할 수 있습니다.
Answer
현재 실행중인 프로세스를 바이너리 프로그램의 정보로 대체하는 Unix OS의 시스템 호출입니다.
system(3)
는 시스템 호출이 아니며 ' 그 자체로 몇 가지를 생성하는 라이브러리 함수입니다. 시스템 호출.system()
는 항상 반환됩니다.