[從0到1搭嵌入式工程]對shell命令的呼叫
在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搭嵌入式工程]對shell命令的呼叫
在linux的應用程式中,呼叫system()和popen()可以執行shell命令。system()命令是序列執行,是阻塞的,等到shell執行結束後,返回, system不能直接返回執行結果。popen()是平行的,不等執行完成,函式就會返回, 繼續往下執行。popen會
[從0到1搭嵌入式工程]計算程序佔用的記憶體大小
指令碼內容: # cat get_process_mem.sh pid=$(ps|grep myprocess|grep -v grep|awk '{print $1}') cat /proc/$pid/status|grep VmRSS|awk
[從0到1搭嵌入式工程]監測外網連線情況gethostbyname
裝置要想實時監測外網連線情況,肯定是需要在外網上有一個點,可以讓你一直監測裝置與這個點之間的連線情況。這個點,就肯定是處在外網中的伺服器。 1,DNS伺服器 180.76.76.76 (百度DNS)、 114.114.114.114(國內移動、電信和聯通通用的DNS)、8
[從0到1搭嵌入式工程]嵌入式應用層判斷SD卡是否存在,獲取大小和剩餘空間
1,判斷是否存在 如果sd卡裝置存在, 在生成/sys/block/mmcblk0/device/cid檔案,存放sd卡的cid資訊, 同目錄下type檔案可以判斷卡型別,如果裝置只支援sd卡,就不需要判斷型別了。 在程式碼中使用popen執行命令:cat /
[從0到1搭嵌入式工程]嵌入式編譯工具鏈命名規則&四大架構&openwrt簡介
對於韌體應用開發來說,編譯工具鏈都是sdk供應商提供的,不同的專案,就有了多種編譯鏈,不同的編譯鏈有什麼區別呢?例如 arm-linux-gnueabihf-xx,mipsel-openwrt-linux-xx 。交叉編譯工具鏈,從授權上,分為免費授權版和付費授權版。免費版目
[從0到1搭嵌入式工程]編譯打包和升級的實現
工程編譯:我們以nand分割槽,分為bootloader、kernel、rootfs、homefs為例。rootfs是linux系統必須的檔案目錄系統和工具的集合,掛載在跟目錄/下,homefs可以認為是我們自己的應用程式、自己的依賴庫,放在homefs中,放在/home目錄
[從0到1搭嵌入式工程]啟動韌體
介紹三種應用程式的啟動方式。第一種是init程序linux 核心啟動之後,會執行1號使用者程序init,然後由它來啟動後面的任務,掛載檔案系統,啟動服務等,init會執行init.rc檔案, 最後由init.rc執行到我們的init.sh指令碼。init作為1號程序,預設的啟
linux開機自啟動與shell命令呼叫
1、編輯/etc/rc.local,例如要執行haha.sh,在中/etc/rc.local加一行“/opt/./haha.sh”,或者兩行“cd /opt”和“./haha.sh”。 2、實現和shell一樣的功能,首先寫一個函式,函式名是其引數,放入到資料夾/bin下面,這樣就直接能在終
Matlab使用新發現1(小技巧:shell 命令、工程工作目錄設定相關)
最近在除錯一個基於Matlab的程式,在偶然間發現了幾個比較有趣的技巧,給大家分享一下(很可能是太菜鳥了,沒有涉及這方面,大方之家請勿見笑,對您有所幫助請點贊!) 1. Matlab語言是一種解釋型語
檢視當前伺服器中的所有的topic,建立topic,刪除topic,通過shell命令傳送訊息,通過shell消費訊息,檢視topic詳情,對分割槽數進行修改
一、 Kafka常用操作命令 檢視當前伺服器中的所有topic [root@hadoop3 kafka]# bin/kafka-topics.sh --list --zookeeper hadoop11:2181 [root@hadoop3 kafk
總結自己使用shell命令行經常使用到的8個小技巧
技巧 span get ash lan host tab localhost 沒有 原創blog,轉載請註明出處 Shell是命令解釋器 [[email protected]/* */ ~]# cat /etc/shells 查看本系統共支持哪些shel
Centos 執行shell命令返回127錯誤
建數據庫 mysq data 存在 思路 功能 自動創建 運行 用戶 shell腳本功能:連接mysql,自動創建數據庫,腳本如下 mysql -h$MYSQL_IP -u$MYSQL_USER -p$MYSQL_PASSWORD --default-character-s
php 執行shell命令 打印錯誤信息
信息 資源 null function $cmd = "rm 1.txt";//刪除一個不存在的文件,查看報錯信息 $res = doShell($cmd); var_dump($res); //該函數沒有限制條件,可以直接放在代碼中使用 function doShell($cmd,$cwd=
zip rar shell命令
gid lac use zip解壓 com dev 簡單 軟鏈接 文件 1、把/home目錄下面的mydata目錄壓縮為mydata.zipzip -r mydata.zip mydata #壓縮mydata目錄2、把/home目錄下面的mydata.zip解壓到mydat
Linux shell 命令行下查詢外網IP
shell命令行查ip查詢IP在網頁上打開網址就可以顯示,但是在命令行下可以安裝w3m/Links/Lynx這些命令行瀏覽器,但是為了這個又感覺不方便,所以很多查IP網站提供了UNIX/LINUX的。命令行查詢(詳細): UNIX/Linux: #curl cip.cc Windows: >tel
寫了一個Mac快速設置、打開和關閉Web代理的Shell命令
快速 還要 痛點 blog 如果 head 編程 shell腳本編程 偏好設置 緣由(痛點) 每次在Mac上設置Web代理,都需要點開"系統偏好設置 -- 網絡 -- 高級 -- 代理",然後分別設置Web代理(HTTP)和安全Web代理(HTTPS),設置完後,還要點"好
redis 從0 到 1 鍵值相關命令 服務器相關命令
star dirty pipeline 監聽端口 分配 打印 bili process dex keys * 獲取所有的key 忽略其數據類型 數據為空 返回(empty list or set) keys a* 、*b 獲取以a開頭 或者 以b結尾的key 返回(
Java 調用 Shell 命令
如果 all buffered red end 資金 final 內容 mes 近日項目中有這樣一個需求:系統中的外幣資金調度完成以後,要將調度信息生成一個Txt文件,然後將這個Txt文件發送到另外一個系統(Kondor)中。生成文件自然使用OutputStreamWir
常用shell命令和vi編輯器
css lin str 目錄 用戶輸入 重定向 move 處理 操作 Shell 介紹 Shell:殼(區別於:核) 普通意義上的shell就是可以接受用戶輸入命令的程序。它之所以被稱作shell是因為它隱藏了操作系統低層的細節。 Bourne-Again shell(ba
對Shell幾個冷知識的總結(IFS,數組,替換,分割,查找)
org pack sqlit com track 創建 gawk read 什麽 IFS: 對IFS的用處直接進行說明,詳細IFS是幹什麽的...自行谷歌 首先創建一個 "a a",和"a"的文件: 然後我們 ls查看一下: --> ls a a a是這種。