回覆列表
  • 1 # 小小猿愛嘻嘻

    你說的是Linux C程式獲取shell指令碼(命令)輸出吧,這裡簡單介紹3種方式,分別是臨時檔案、匿名管道和popen函式,感興趣的朋友可以嘗試一下:

    臨時檔案

    這種方式最容易實現,基本思想是呼叫C語言標準庫的system函式,執行shell命令或指令碼,將輸出結果重定向到一個臨時檔案中,然後讀取臨時檔案,獲取shell執行結果,測試程式碼如下,非常簡單,輸入引數分別為shell命令(指令碼)和臨時檔名,最終結果儲存在臨時檔案中:

    匿名管道

    這種方式主要是管道,先pipe建立一個匿名管道,然後fork建立一個子程序,子程序執行shell命令或指令碼,並將標準輸出dup到匿名管道的寫端,父程序再從匿名管道讀端讀取資料即可,測試程式碼如下,非常簡單,子程序對應寫端,父程序對應讀端:

    popen函式

    這種方式最簡單,C標準庫專門提供了一個popen函式,可以非常簡單的處理呼叫shell,基本思想建立一個管道,fork一個程序,然後執行shell,而shell的輸出可以採用讀取檔案的方式獲得,這種方式既避免了建立臨時檔案,又不受輸出字元數的限制,推薦使用:

    目前,就分享這3種Linux C程式獲取shell指令碼(命令)輸出的方式吧,對於日常開發應用來說,完全夠用了,只要你有一定的C語言基礎,熟悉一下上面的程式碼,很快就能掌握的,網上也有相關教程和資料,介紹的非常詳細,感興趣的話,可以搜一下,希望以上分享的內容能對你有所幫助吧,也歡迎大家評論、留言進行補充。

  • 中秋節和大豐收的關聯?
  • 怎樣設定無線路由器連線平板電腦?我是連線的上,但是打不開網頁,怎麼辦?路由器是TP-LINK的,在現等答案?