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