社区
Linux/Unix社区
帖子详情
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
打赏
收藏
C++ 中有没有类似的 popen
popen 是C的函数,返回 FILE* 指针, 实现执行一个命令 并 把 该命令的输出结果从定向到 FILE* 指向的文件里。 那 C++ 有没有相应类似的函数 ,实现 执行一个 linux 命令,并把输出结果 重定向到 一个 I/O 流。。就像 ifstream 打开文件 得到 I/O 流?而不是得到FILE*, 我觉得 对 C++ 中I/O 流的 操作 更好用些。
复制链接
扫一扫
分享
转发到动态
举报
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
打赏
举报
回复
恳请 各位大虾指教
跨平台实现异步执行命令,
类似
popen
,可同时读写
"跨平台实现异步执行命令,
类似
popen
,可同时读写"这个主题涉及到的是进程间通信(IPC, Inter-Process Communication)以及如何在不同操作系统上执行系统命令并获取其输出。在
C++
中
,实现这样的功能需要理解操作系统...
重新实现
popen
和system函数
在编程领域,`
popen
` 和 `system` 函数是C/
C++
标准库
中
用于执行命令行进程的工具。它们提供了方便的方式来与操作系统交互,执行外部程序并读取或写入其输出。然而,有时出于安全或性能考虑,开发者可能需要自定义...
popen
:一个
类似
于 DSL 前端的 shell,用于 subprocess.
Popen
popen
包在 python
中
提供了一个简单的
类似
shell 的语法来运行外部命令。 特征: 链接(又名管道)为Sh('ls') | 'sort' Sh('ls') | 'sort' 将标准错误重定向到标准输出作为Sh('make').include_stderr | 'wc' Sh...
关于读取
popen
输出结果时未截断字符串导致的命令行注入详解
而在C语言的上下文
中
,
类似
的问题也可能发生,比如使用`system`或`
popen
`函数时。 0x02 **`
popen
`函数的漏洞** 在上述描述的题目
中
,存在一个名为`list_books`的函数,它使用`
popen
`列出`lib/`目录下的所有文件。...
获取命令行输出内容
总结,获取命令行输出内容在
C++
中
主要依赖于`
popen
`函数,通过创建子进程并读取其输出流。这个过程涉及到进程间通信(IPC)的概念,理解这一点对于编写系统级程序至关重要。在实际应用
中
,根据具体需求可能还需要...
Linux/Unix社区
23,216
社区成员
74,539
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章