基礎知識 | 每日一練(161)

  • 2019 年 10 月 31 日
  • 筆記

基礎知識練習

讀者:怎樣調用另一個程序或命令, 同時收集它的輸出?

小林:Unix 和其它一些系統提供了 popen() 函數, 它在聯通運行命令的進程管道設置了 stdio 流, 所以輸出可以被讀取 (或提供輸入)。記住, 結束使用後, 要調用函數pclose()。如果你不能使用 popen(), 你應該可以調用 system(), 並輸出到一個你可以打開讀取的文件。如果你使用 Unix, 覺得 popen() 不夠用, 你可以學習用 pipe(), dup(), fork()和 exec()。順便提一下, freopen() 可能並不工作。

讀者:怎樣才能發現程序自己的執行文件的全路徑?

小林:arg[0] 也許含有全部或部分路徑, 或者什麼也沒有。如果 arg[0] 中的路徑不全,你也許可以重複命令語言注釋器的路徑搜索邏輯。但是, 沒有保證的解決方法。