본문 바로가기
Programming/C/C++

system()과 execl()의 차이

by bbolmin 2012. 5. 16.

 

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함수를 써서 원래 코드도 실행되도록 해줍니다.


 ->