리눅스에서 C 언어로 코딩을 하다보면 Shell 명령어를 콜하고 싶을 때가 있습니다.
파일 처리를 한다던가 다른 프로세스나 데몬을 실행한다던가 하는 경우인데요.
이럴 경우 간단하게 처리하는 함수가 있습니다.
system 이라는 함수인데 다음과 같습니다.
|
이름
system - shell 명령어 실행하기
사용법
#include
int system (const char * string);
설명
system() 함수는 /bin/sh -c string를호출하여 string 에 지정
된 명령어를 실행하며, 명령어가 끝난후 반환된다. 명령어 가
실 행되는 동안, SIGCHLD 는 블럭되며, SIGINT 그리고 SIGQUIT
는 무시된다.
반환값
리턴된 값은만일 /bin/sh 을 위한 execve() 호출이 실패 한 다
면, 리턴된 값은 127 이며, 다른 에러가 있다면 -1, 그렇지 않
으면 명령어의리턴코드가 반환된다.
string 값이 NULL이라면, system() 은 shell을 이용할수 있 다
면 0 이 아닌 값을, 그렇지 않으면 0 값을 반환한다.
system() 은 어떤 다른 자식의 wait 상태에 영향을 주지 않는
다.
|
예제는
int ret = system("ls -l");
한가지 문제는 system 함수의 리턴 값으로는 실행한 shell 명령어나 프로세스의 결과를 리턴할 수 없다. 이런 경우에는 실행 결과를 파일로 저장한 후에 코드에서 이 파일을 읽어서 결과를 얻어오는 방법을 사용해야하는 불편이 있다.
댓글 없음:
댓글 쓰기
국정원의 댓글 공작을 지탄합니다.