C++ 中有没有类似的 popen

shouso888 2011-10-11 11:13:01
popen 是C的函数,返回 FILE* 指针, 实现执行一个命令 并 把 该命令的输出结果从定向到 FILE* 指向的文件里。

那 C++ 有没有相应类似的函数 ,实现 执行一个 linux 命令,并把输出结果 重定向到 一个 I/O 流。。就像 ifstream 打开文件

得到 I/O 流?而不是得到FILE*, 我觉得 对 C++ 中I/O 流的 操作 更好用些。
...全文
328 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
juliantec 2011-10-13
  • 打赏
  • 举报
回复
你需要用c++封装下 popen 之类的函数,可在 juliantec maillist 中提问。
shouso888 2011-10-13
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 qq120848369 的回复:]

在C板块回答你,你听不进去,真没办法。
[/Quote]

呵呵, 我很尴尬。。。我当时在两个板块同时发了这问题, 想想 要问就问到底吧,集思广益。。对你热情的

解答我很感谢的说。。恩,上次的答案我有 思考过, 已经很满意了。最近事多加上第一次发帖,没能及时结

贴, 再次感谢。。
qq120848369 2011-10-13
  • 打赏
  • 举报
回复
你非要用fstream做,办法如下:

步骤:

1,父进程open一个pid.txt文件,描述符n,直接Unlink pid.txt。
2,fork子进程,子进程dup2(n,STDOUT_FILENO),execl /bin/bash sh -c cmd .
3, 父进程wait子进程退出。
5,父进程fstream(pid.txt); 就可以读了。
6, 读完之后父进程close(n),父进程stream.close();
7,父进程退出,Unlink此时删除文件。
qq120848369 2011-10-13
  • 打赏
  • 举报
回复
在C板块回答你,你听不进去,真没办法。
shouso888 2011-10-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 feiyinzilgd 的回复:]

引用楼主 shouso888 的回复:
popen 是C的函数,返回 FILE* 指针, 实现执行一个命令 并 把 该命令的输出结果从定向到 FILE* 指向的文件里。

那 C++ 有没有相应类似的函数 ,实现 执行一个 linux 命令,并把输出结果 重定向到 一个 I/O 流。。就像 ifstream 打开文件

得到 I/O 流?而不是得到FILE*, 我觉得 对 C++ 中I……
[/Quote]

嗯,谢谢你。现在我是希望在程序里 执行 linux 的 ps 命令,然后 获取 输出的信息。原打算用

popen,在用fgets 获取信息 ,并解析这行信息。。现在我希望 能 用 C++ 执行 ps 命令后 能 返回C++形

式的 I/O 流 取 得 ps 输出的信息? 如ifstream s(文件),获取到 s ,再对 流 s 进行解析。。该咋办较好?
谭海燕 2011-10-12
  • 打赏
  • 举报
回复
[Quote=引用楼主 shouso888 的回复:]
popen 是C的函数,返回 FILE* 指针, 实现执行一个命令 并 把 该命令的输出结果从定向到 FILE* 指向的文件里。

那 C++ 有没有相应类似的函数 ,实现 执行一个 linux 命令,并把输出结果 重定向到 一个 I/O 流。。就像 ifstream 打开文件

得到 I/O 流?而不是得到FILE*, 我觉得 对 C++ 中I/O 流的 操作 更好用些。
[/Quote]


Linux下 C++开发实际上就是C++ 结合 Linux C. 由于Linux系统api以及接口都是使用C语言实现的。

所以C++编程过程中一般都是遇到Linux特定的工作,比如你说的执行命令,都还是使用的C++内部封装C。

标准C++没有平台相关。
shouso888 2011-10-11
  • 打赏
  • 举报
回复
恳请 各位大虾指教

23,216

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧