從0到1搭嵌入式工程 對shell命令的呼叫

2021-08-19 18:44:28 字數 660 閱讀 7693

在linux的應用程式中,呼叫system()和popen()可以執行shell命令。

system()命令是序列執行,是阻塞的,等到shell執行結束後,返回, system不能直接返回執行結果。

popen()是平行的,不等執行完成,函式就會返回, 繼續往下執行。

popen會返回乙個檔案指標,可以對這個檔案指標進行讀和寫,會作用到sh中的檔案中。

所以對於需要阻塞的命令,可以直接呼叫system(), 對於並行執行的:

file * pf = null;

pf = popen(cmd, "r");

if(null != pf) pclose(pf);

對於需要返回值的, popen因為自帶管道,容易實現:

pf = popen(cmd, "r")

fd = fileno(pf)

while(1){

fd_zero(&fdset); fd_set(fd, &fdset);

ret = select(1+fd, &fdset, 0, 0, timeout);

if(fd_isset(fd, &fdset)) fread(result_buf, 1, len, pf);

pclose(pf);

使用select作為乙個timeout, 一直等到有返回值,才結束返回。

從0到1搭嵌入式工程 裝置與伺服器後台通訊的搭建

通過什麼協議,需要什麼依賴,加密,做什麼通訊,心跳保持,前後相容問題。2,用http還是https,使用http協議,傳輸的文字會以明文的形式在網際網路上傳輸,可能會被擷取,檢視,使用https協議,訊息會被加密後傳送到網路上,中間資料被截到後,也無法解密。保證了安全性,https會有認證和解密過程...

從微控制器到嵌入式

1 什麼是微控制器?微控制器是乙個控制系統,接收管腳中斷輸入,進行一些簡單的邏輯操作,對記憶體或flash進行訪問,再輸出到管腳 2 什麼是嵌入式?嵌入式有linux核心 linux核心功能有 程序管理 記憶體管理 檔案系統管理 裝置驅動 網路管理 3 微控制器和嵌入式有什麼共同點?都是靠中斷驅動,...

讀嵌入式linux驅動程式設計從入門到精通1

主裝置號標誌裝置對應的驅動程式,次裝置號對應具體的裝置例項。由同乙個裝置驅動控制的所有裝置具有相同的主裝置號,從裝置號用來區分具有相同主裝置號且由相同裝置驅動控制的不同裝置。裝置位於 dev目錄,字元裝置的標誌的c,塊裝置的標誌是b。dev t型別 中定義 用來儲存裝置編號,主裝置號12位,次裝置號...