2011-09-12 3 views
2

유닉스 기반 시스템에서 exec (const char * c) 명령과 system (const char * c)의 차이점은 무엇입니까?유닉스에서의 차이점 exec() 및 system()

둘 다 시스템 호출을 실행하기 위해 C 프로그램에서 호출 할 수 있습니다. 둘 다 차이가 있습니까?

답변

8

exec은 지정된 프로그램으로 프로세스를 대체합니다. 프로그램이 완료되어 계속 실행되지 않습니다.

spawn은 (아마도 처음에는 fork을 사용하여) 새 프로세스를 시작하고 프로그램이 계속 실행되는 동안 지정된 프로그램을 실행합니다.

system은 (아마도 처음으로 fork을 사용하여) 새 프로세스를 시작하고 프로그램이 대기하는 동안 지정된 프로그램을 실행합니다. 자녀가 퇴장하면 프로그램이 계속됩니다.

+3

는'system'은'/ 빈/SH -c "명령"'에서와 같이 쉘에서 명령을 실행합니다. 명령에 재미있는 문자가 포함되어 있으면 큰 차이가 있습니다. – Nemo

+0

@Nemo : 위대한 포인트 –

1

exec은 파일을 실행하고 system은 쉘을 실행하고 인수를 제공합니다. 위키

:

그것은 (시스템) 대신 실행 객체에 인자를 전달하는 단일 스트링이 시스템 쉘에 전달에 exec 함수/산란 가족 상이 전형적 POSIX 쉘,/bin/sh -c.

http://en.wikipedia.org/wiki/System_%28C_standard_library%29

+0

콘솔을 실행하지 않고 쉘 만 실행합니다. – glglgl

+1

수정 됨. 고맙습니다. –

관련 문제