2013-10-08 39 views
0

一個cron作業創建,並在cron作業包含以下代碼:的Linux API「系統」

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

cron作業每天EXCUTE,和「標誌」通常是「0」,但是有時「falg」是「32512」。

我有谷歌的錯誤代碼,它的意思是「命令未找到」。

但我需要你的幫助來啓迪我,爲什麼有時候沒事,有時候不是。 它與相對目錄「路徑/主」有關嗎?

+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)。閱讀我鏈接到的兩個手冊頁。 –

回答

1

返回代碼是幾件事的位掩碼(參見例如this question)。在你的情況下,它建議退出代碼255(這是純粹從你的子進程,而不是信號)。您應該檢查您的main程序。

+0

32512 = 127 * 256,所以shell的返回碼是127.這意味着「該命令不是 找到」 – iceKing

+0

感謝您的幫助。我想更仔細地檢查代碼。^_^ – iceKing

+0

@iceKing:如果對'system()'的調用沒有返回'-1'和'127 == WEXITSTATUS(flag)',那麼shell('bin/sh')應該執行*傳遞給'system()'的程序沒有找到**或**程序*本身返回了'127'。這個值有明顯的含糊性。 – alk