[완료]system() 함수 리턴값 질문 드립니다.
글쓴이: poplinux / 작성시간: 수, 2007/03/21 - 3:58오후
"Beginning Linux Programing" 을 보고 있습니다.
10장. 프로세스와 시그널 을 보면 다음과 같은 문장이 나옵니다.
"system()은 쉘이 명령을 실행하도록 시작될 수 없었다면 127을 반환하고, 다른 에러가 발생한다면 -1 을 반환한다. 그렇지 않으면 system은 명령의 종료 코드를 반환한다."
그래서 리턴코드 100을 반환하는 어플을 작성해서 다음과 같이 호출해 보았는데 제대로된 리턴값이 나오질 않습니다.
원인이 무엇일까요?
error = system("./test");
printf("Return code %d\n",error);
결과값은 중구난방으로 나옵니다.
Forums:
test라는 프로그램의
test라는 프로그램의 종료시에 return 값이 존재해야만
error에서 리턴값을 받을 수 있습니다.
개발자들의 궁극적 비전은 ?
훔. return 100; 으로
훔.
return 100; 으로 테스트 프로그램을 끝냈습니다.
========================
조직 : E.L.D(Embedded Linux Developer/Designer)
블로그 : poplinux@tistory.com
카페 : cafe.naver.com/poplinux
임베디드 리눅스 관련 프리렌서 지향
리턴되는 값이
리턴되는 값이 부호가 있을수도 있고 없을수도 있지 않을까요?
호출하는 app 는
호출하는 app 는 다음과 같습니다.
위 상황에서 리턴되는 값은 int 100 이 아닐까요?
========================
조직 : E.L.D(Embedded Linux Developer/Designer)
블로그 : poplinux@tistory.com
카페 : cafe.naver.com/poplinux
임베디드 리눅스 관련 프리렌서 지향
man 3 system: 인용: The
man 3 system:
네. 감사합니다.
네. 감사합니다. 그런데 system() 으로는 할 수 없나 보군요.
========================
조직 : E.L.D(Embedded Linux Developer/Designer)
블로그 : poplinux@tistory.com
카페 : cafe.naver.com/poplinux
임베디드 리눅스 관련 프리렌서 지향
system()으로 뭘 하고
system()으로 뭘 하고 싶으신 건지는 잘 모르겠지만, 단순히 종료코드값을 받아올 목적이라면
printf("Return code %d\n",error);
대신
printf("Return code %d\n",WEXITSTATUS(error));
해주시면 될 겁니다. 위의 매뉴얼 페이지도 그 내용이구요. WEXITSTATUS는 wait()에 연관돼있기 때문에 아마 sys/wait.h 를 #include 하셔야 할 겁니다.
댓글 달기