搜尋此網誌

工商服務

2008年2月1日 星期五

在Linux下如何透過C語言執行命令?

這個問題的描述再詳細不過了,當你遇到需求的時候就會知道。嗯,反正套句村上春樹的話,就是這麼回事。

以我自己為例,我為公司專案的程式實作了一個檢查版本並下載更新的功能(基本概念請參考本站的〈使用HTTP實現軟體更新的簡易方法!〉這篇文章),這個檢查更新的動作是在開機的時候透過shell script完成的。至於更新完畢之後的重新開機動作,則必須由程式本身去執行,因為shell script無從得知程式的狀態是否處於閒置。所以問題來了,要怎麼在Linux下利用C語言去執行命令呢?以重新開機來說,就是「sync;sync;sync;reboot」,亦即先將記憶體內的資料寫回硬碟,然後才執行重新開機的動作。

答案很簡單,就是宣告於stdlib.h裡面的int system(const char *command)函式。你用「man system」去查詢的話,便會得知這是用來「execute a shell command」的。這個函式的command參數字串就是你要下的命令,內容就跟平常在執行命令時一樣,例如要「ls /home」的話,函式的呼叫就寫成「system("ls /home");」即可。簡單的sample code如下:

#include <stdlib.h>
main()
{
system("ls /home");
}


這是我昨天學到的函式,感謝煌哥費心指導,:)

沒有留言:

張貼留言