我想在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中的返回代码.