基础知识 | 每日一练(161)

  • 2019 年 10 月 31 日
  • 筆記

基础知识练习

读者:怎样调用另一个程序或命令, 同时收集它的输出?

小林:Unix 和其它一些系统提供了 popen() 函数, 它在联通运行命令的进程管道设置了 stdio 流, 所以输出可以被读取 (或提供输入)。记住, 结束使用后, 要调用函数pclose()。如果你不能使用 popen(), 你应该可以调用 system(), 并输出到一个你可以打开读取的文件。如果你使用 Unix, 觉得 popen() 不够用, 你可以学习用 pipe(), dup(), fork()和 exec()。顺便提一下, freopen() 可能并不工作。

读者:怎样才能发现程序自己的执行文件的全路径?

小林:arg[0] 也许含有全部或部分路径, 或者什么也没有。如果 arg[0] 中的路径不全,你也许可以重复命令语言注释器的路径搜索逻辑。但是, 没有保证的解决方法。