FILE *popen(const char *command, const char *type);
popen() 函數 用創建管道的方式啓動一個進程,並調用 shell.因爲管道是被定義成單向的, 所以 type 參數只能定義成只讀或者只寫, 不能是兩者同時, 結果流也相應的是隻讀或者只寫.
command 參數是一個字符串指針, 指向的是 一個以 null 結束符結尾的字符串, 這個字符串包含一個 shell 命令. 這個命令被送到 /bin/sh 以 -c 參數 執行, 即由 shell 來執行. type 參數 也是一個 指向以 null 結束符結尾的字符串的指針, 這個字符串必須是'r'或者'w’ 來指明是讀還是寫.
popen() 函數的返回值是一個普通的標準I/O流,它只能用 pclose() 函數來關閉, 而不是 fclose(). 函數. 向這個流的寫入被轉化爲對command命令的標準輸入; 而command 命令的標準輸出則是和調用 popen(), 函數的進程相同,除非這 被command命令自己改變. 相反的, 讀取 一個“被popen了的” 流, 就相當於讀取 command 命令的標準輸出, 而 command 的 標準輸入則是和調用 popen, 函數的進程相同.
注意, popen 函數的輸出流默認是被全緩衝的
經驗,popen後,就可以用fgetc,fgets,fread進行操作。