当前位置: 技术问答>linux和unix
C++ 中有没有类似的 popen
来源: 互联网 发布时间:2017-01-07
本文导语: popen 是C的函数,返回 FILE* 指针, 实现执行一个命令 并 把 该命令的输出结果从定向到 FILE* 指向的文件里。 那 C++ 有没有相应类似的函数 ,实现 执行一个 linux 命令,并把输出结果 重定向到 一个 I/O...
popen 是C的函数,返回 FILE* 指针, 实现执行一个命令 并 把 该命令的输出结果从定向到 FILE* 指向的文件里。
那 C++ 有没有相应类似的函数 ,实现 执行一个 linux 命令,并把输出结果 重定向到 一个 I/O 流。。就像 ifstream 打开文件
得到 I/O 流?而不是得到FILE*, 我觉得 对 C++ 中I/O 流的 操作 更好用些。
那 C++ 有没有相应类似的函数 ,实现 执行一个 linux 命令,并把输出结果 重定向到 一个 I/O 流。。就像 ifstream 打开文件
得到 I/O 流?而不是得到FILE*, 我觉得 对 C++ 中I/O 流的 操作 更好用些。
|
Linux下 C++开发实际上就是C++ 结合 Linux C. 由于Linux系统api以及接口都是使用C语言实现的。
所以C++编程过程中一般都是遇到Linux特定的工作,比如你说的执行命令,都还是使用的C++内部封装C。
标准C++没有平台相关。
|
你非要用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此时删除文件。
步骤:
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此时删除文件。
|
你需要用c++封装下 popen 之类的函数,可在 juliantec maillist 中提问。