2013-10-08 2 views
0

크론 작업이 생성되고, cron 작업에 다음 코드가 포함하지만,리눅스 API를 "시스템"

int flag = system("path/main"); 
printf("system return value: %d \n", flag); 

크론 작업이 매일 excute에, 그리고 "플래그가"보통 "0"을 때때로 "falg"는 "32512"입니다.

Google에 오류 코드가 있습니다. "명령을 찾을 수 없습니다"라는 의미입니다.

하지만 나에게 계몽하기 위해 당신의 도움이 필요합니다. 왜 언젠가는 괜찮은지, 가끔은 그렇지 않습니다. "path/main"관련 디렉토리로 중요합니까?

+0

"때때로"에 대한 자세한 내용이 필요합니다. 아마도이 작업은 다른 정책/다른 사용자에 의해 실행되고있을 것입니다. –

+0

정보 부족으로 불편을 끼쳐 드려 죄송합니다. 나는 "때때로"에 관한 어떤 법률도 아직 찾지 못했다. 죄송합니다. – iceKing

+0

[system (3)] (http://man7.org/linux/man-pages/man3/system.3.html)은 [waitpid (2)]에 의해 주어진 상태를 반환합니다 (http://man7.org /linux/man-pages/man2/waitpid.2.html). 내가 링크 된 두 man 페이지를 읽으십시오. –

답변

1

리턴 코드는 여러 가지 항목의 비트 마스크입니다 (예 : this question 참조). 귀하의 경우에는 종료 코드 255 (신호로 인한 것이 아니라 귀하의 자녀 과정에 의한 것임)를 제안합니다. main 프로그램을 확인해야합니다.

+0

32512 = 127 * 256이므로 셸의 리턴 코드는 127입니다. "명령이 이 아님을 의미합니다" – iceKing

+0

도움을 주셔서 감사합니다. 나는 코드를 더 조심스럽게 검사하고 싶다.^_^ – iceKing

+0

@iceKing :'system()'호출이'-1'과'127 == WEXITSTATUS (flag)'를 반환하지 않으면 * (*)를 실행해야하는 쉘 ('bin/sh') program (*)에 전달 된 프로그램이 발견되지 않았거나 ** 프로그램 자체가'127'을 반환했습니다. 이 값에는 명확한 모호성이 있습니다. – alk