如何在c中获取linux命令输出字符串和输出状态

前端之家收集整理的这篇文章主要介绍了如何在c中获取linux命令输出字符串和输出状态前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想在C程序中获取 Linux命令的输出字符串以及命令输出状态.我在我的应用程序中执行Linux命令.

例如:
命令:

rmdir abcd

命令输出字符串:

rmdir: Failed to remove `abcd’: No such file or directory

命令状态:

1 (Which means command has been Failed)

我尝试使用Linux函数system()给出输出状态,函数popen()给出了一个命令的输出字符串,但这两个函数都没有给我两个
Linux命令的输出字符串和输出状态.

解决方法

输出字符串是标准输出或标准错误描述符(分别为1或2).

您必须将这些流重定向(请参阅dup和dup2函数)到一个可以读取它们的位置(例如 – 一个POSIX管道).

在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);

现在,您有缓冲区输出(的一部分)和retValue中的返回代码.

或者,您可以使用exec中的函数(即execve)并使用wait或waitpid获取返回值.

更新:这将仅重定向标准输出.要重定向标准错误,请使用dup2(pd [1],1).

猜你在找的C&C++相关文章