system()과 execl() 둘다 명령을 실행하는 함수 인데 무슨 차이가 있을까요?
일단 표면 적으로는 ls -al 같은 명령을 쓸때 system함수의 경우에는 system("ls -al") 처럼 사용하고
execl함수는 execl("/bin/ls", "ls", "-al", 0) 처럼 옵션을 다른 인자로 넘겨줘야 한다는게 차이가 있습니다.
그리고 한가지 더 보면
->
->
위와 같이 system함수의 경우는 ls 명령어 실행 후 원래 프로그램으로 돌아와서 남아 있는 printf를 호출 합니다.
그런데 execl함수는 ls 명령어 실행 후 printf가 호출 되는 것을 볼 수 없습니다. ( execl를 호출 했을 때는 현재 프로그램이 /bin/ls라는 프로그램으로 덮어 씌워지는 것입니다. )
따라서 execl를 쓸때는 fork함수를 써서 원래 코드도 실행되도록 해줍니다.
->
'Programming > C/C++' 카테고리의 다른 글
c언어 - 확장 유클리드 알고리즘 (1) | 2012.05.26 |
---|---|
c언어 - 유클리드 알고리즘 (0) | 2012.05.26 |
system함수, exec계열의 함수(execl, execv, execle, execve, execlp, execvp) (2) | 2012.05.16 |
프로그램 종료2 - atexit(), _exit() (0) | 2012.05.03 |
프로그램 종료 - assert(), exit(), abort() (0) | 2012.05.02 |