當前位置:首頁 » 操作系統 » linuxshell函數返回

linuxshell函數返回

發布時間: 2025-06-05 20:39:36

❶ Linux system 函數

最近工作中在 Linux 下,某些指定的程序需要調用指定的 shell 腳本完成指定工作,以前也曾經做過類似的功能,調用 system 函數執行指定的腳本,以前並不關心 shell 腳本是否執行成功了,現在的功能需要根據 shell 腳本執行成功與否,於是查詢了下 system 函數的說明,有此文以做筆記之用。

功能:調用/bin/sh -c 執行指定的腳本 command

常規使用方法:

關於返回值:

答案是 都錯

man手冊

看著挺暈的,但是如果對於 system 的執行過程了解的話,就很容易理解了,函數執行分為以下幾個階段。
階段1:創建子進程等准備工作。如果失敗,返回-1
階段2:調用 /bin/sh 拉起腳本,如果拉起失敗或者shell未正常執行,原因值被寫入ret中
階段3:如果 shell 腳本執行成功, shell 腳本的返回值寫入ret中

從上面可知,不管 shell 腳本返回什麼值,只要調用了/bin/sh,並且執行過程沒有被信號中斷,都算正常結束。因為腳本是在子進程中執行的,所以要想獲取腳本是否執行成功的方法只能用系統提供的兩個宏。

由於我們一般在 shell 中會通過返回值判斷腳本是否執行成功,成功返回0,成功返回整數。所以判斷一個腳本是否執行成功,應該滿足三個條件:

注意:當 shell 腳本不存在時、沒有執行條件等,前兩個條件也會成立,此時WEXITSTATUS(ret)為127,所以shell腳本中不能將127作為返回值,shell腳本中的異常返回值最好從1開始遞增,成功返回0。

system 用起來,看則簡單,實則不那麼簡單,有很多隱藏的坑,需要自己深入理解原理,才能更好地使用,也可以用其他實現方式完成相同的功能。
最後對自己說,多寫,多思,多總結

熱點內容
c編譯器版本查詢 發布:2025-08-17 22:01:33 瀏覽:136
思科怎麼保存交換機的配置 發布:2025-08-17 21:54:30 瀏覽:286
雲編程電腦 發布:2025-08-17 21:53:37 瀏覽:153
谷歌訪問助手安裝 發布:2025-08-17 21:48:34 瀏覽:547
hibernate一級緩存二級緩存 發布:2025-08-17 21:48:14 瀏覽:340
家裡沒有伺服器怎麼回事 發布:2025-08-17 21:44:36 瀏覽:36
卡宴什麼配置有尾翼 發布:2025-08-17 21:39:29 瀏覽:368
人事管理系統源碼asp 發布:2025-08-17 21:33:44 瀏覽:528
乘以25的簡便演算法 發布:2025-08-17 21:29:22 瀏覽:228
php限制登錄 發布:2025-08-17 21:29:15 瀏覽:683