在linux下進行編寫程式的時候,如果需要執行一段指令碼,並且需要獲取指令碼執行的結果,按麼最好使用popen。下面就舉乙個例子:
c**檔案為: 3.c,內容如下:
#include
#include
#include
#include
#include
#include
typedef struct tag_result
}result,*lpresult;
int writefile(const
char *filename,const
char *pfile,const
int nlen)
if(fwrite((void *)pfile,1,nlen,stream)!=nlen)
fclose(stream);
return 0;
}
int main()
;
char dddd[10]=;
char cccc[100]=;
pstream=popen("a","r");
if(pstream)
else
return 1;
}
要執行的指令碼名稱為a,指令碼內容為:
#!/bin/sh
#filename: a
fileinfo=11
rm fileinfo #>/dev/null 2>
echo -n $fileinfo";" >> fileinfo
echo -n $fileinfo";" >> fileinfo
ls -l $fileinfo | awk '' >> fileinfo
cat fileinfo
通過:g++ -o 11 3.c 編譯c**生成可執行檔案為:11,直接執行11,就可以檢視到結果.
1.問題1: 如果指令碼a在第3行的時候,直接就通過exit 1返回了,那麼通過popen開啟執行這個指令碼會出現什麼結果呢?
如果指令碼直接返回,相當於指令碼沒有向popen開啟的檔案中寫入任何資料,也就是說popen相當於開啟了乙個空檔案.
2.問題2: popen開啟的檔案中獲取的是什麼資料?
獲取的就是指令碼輸出到標準輸出的資料。
linux的popen函式使用
有了popen,使得linux開發的程式相當於可以輕鬆呼叫這台機器上的任何程式,因為popen執行命令後,可以返回執行輸出結果供程式使用 使用範例 include include strlen include include includeusing namespace std execute sh...
在Linux中使用執行緒
我並不假定你會使用linux的執行緒,所以在這裡就簡單的介紹一下。如果你之前有過多執行緒方面的程式設計經驗,完全可以忽略本文的內容,因為它非常的初級。首先說明一下,在linux編寫多執行緒程式需要包含標頭檔案pthread.h。也就是說你在任何採用多執行緒設計的程式中都會看到類似這樣的 1 incl...
在windows的IDE中使用linux命令列
經常敲命令列,所以很不習慣windows的cmd和powershell。尤其是用過mac之後,發現完全回不來了。在碼 的時候,尤其是當需要乙個修改乙個環境變數,多麼希望能用export之類的命令。本篇文章的目的就是要幫你在ide的terminal裡面配置linux命令。最終效果展示 jetbrain...