我想在C++程序中获取Linux命令的输出字符串以及命令输出状态.我在我的应用程序中执行Linux命令.
例如:命令:
rmdir abcd
命令输出字符串:
rmdir:无法删除`abcd':没有这样的文件或目录
命令状态:
1(表示命令失败)
我尝试使用system()提供输出状态的Linux函数,以及popen()给出命令输出字符串的函数,但这两个函数都没有给我输出字符串和Linux命令的输出状态.
输出字符串是标准输出或标准错误描述符(分别为1或2).
您必须将这些流(请查看dup并dup2运行)重定向到可以读取它们的位置(例如 - POSIX pipe).
在C中我会做这样的事情:
int pd[2];
int retValue;
char buffer[MAXBUF] = {0};
pipe(pd);
dup2(pd[1],1);
retValue = system("your command");
read(pd[0], buffer, MAXBUF);
Run Code Online (Sandbox Code Playgroud)
现在,您有缓冲区输出(的一部分)和retValue中的返回代码.
或者,您可以使用from exec(ie execve)中的函数并使用wait或获取返回值waitpid.
更新:这将仅重定向标准输出.要重定向标准错误,请使用dup2(pd[1],1).
| 归档时间: |
|
| 查看次数: |
4104 次 |
| 最近记录: |