execl()은 절대 경로가 없으면 명령을 실행하지 않습니다.

execl()은 절대 경로가 없으면 명령을 실행하지 않습니다.

에 저장된 C 프로그램이 있습니다 /usr/sbin/. 이 프로그램은 2초마다 "Hello World"를 인쇄합니다. 모든 폴더에서 프로그램을 호출/실행할 수 있습니다.

이를 사용하여 C 프로그램을 작성하면 system("a.out");모든 폴더에서 실행되지만 사용할 때는 execl()절대 경로를 제공해야 합니다. execl("/usr/sbin/a.out", "a.out");그렇지 않으면 실행되지 않습니다. 왜?

답변1

system()shC 라이브러리 함수는 주어진 명령을 실행하는 데 사용됩니다 . 이렇게 하면 $PATH프로그램이 절대 경로를 사용하여 지정되지 않은 한 디렉터리에서 실행 파일을 검색합니다. C 라이브러리 함수는 execl()이러한 조회를 수행하지 않습니다.

exec이 기능 계열을 사용하여 프로그램을 실행한 다음 execlp()어떤 기능을 사용하여 PATH알아보 시겠습니까 ?

시스템을 확인하십시오 man execlp.

관련 정보