popen和system有什么區(qū)別?
這兩個都是屬于C庫里面的函數(shù),作用也差不多,可以在程序中執(zhí)行shell命令。
比如在system中寫上clear命令,執(zhí)行程序的時候就會清空屏幕;在system中寫上ifconfig,運行的時候就能看到網(wǎng)卡信息。
所以 system 的作用,就是單純的執(zhí)行一條命令。
如果想在程序中獲得命令執(zhí)行的結(jié)果,就可以借助popen。
popen包含兩個參數(shù),第一個是要執(zhí)行的命令,第二個表示讀或者寫,返回標準的IO流地址。
如果要讀取命令的結(jié)果,使用fread就行。
僅僅從使用上來分析他倆的區(qū)別,system只能執(zhí)行命令,popen不僅可以執(zhí)行,還能獲得執(zhí)行的結(jié)果。
他們的實現(xiàn)也不太相同,popen本身不會阻塞,system會通過waitpid來阻塞;popen返回值簡單,system返回值更復雜;而且system在執(zhí)行指令的時候,還會忽略和阻塞一些信號。
所以,關(guān)于這兩個函數(shù),你覺得應該如何選擇?
審核編輯:劉清
-
Shell
+關(guān)注
關(guān)注
1文章
372瀏覽量
24215
原文標題:popen和system的區(qū)別!
文章出處:【微信號:學益得智能硬件,微信公眾號:學益得智能硬件】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
評論