程序设计:C语言 调用命令行程序并获得输出 popen(源码)

        这是个很基本的功能,因此功能在C运行库里就提供了。注意与执行程序并获得返回值的exec函数相区别,这个功能的目的在于获得程序的控制台输出。

        两个函数:

  • popen(windows下为_popen)打开管道并执行控制台程序,返沪FILE*用于后续操作。对于窗口程序会导致问题,并且在UWP中完全不支持
  • pclose(windows下为_pclose)关闭管道,也就是FILE*

        在这两个函数之间对FILE*读取数据即可。

        popen的声明:

FILE *popen(
    const char *command,
    const char *mode
);

        第一个参数就是要执行的命令行,第二个参数是打开的管道的模式,只有r、w、b、t四个可选项,分别是“读、写、二进制、文本”,按照书上的说法,一般大部分情况下都是单向交互的,要么是打开程序读取输出,要么是打开程序往里面吐数据,所以这个函数就设计成这样了。

        UNIX/LINUX程序:

	string & GetShellOutput(char const * cmd, string & output)
	{
		char buf[1024];
		FILE * pf;

		output = "";
		if (NULL == (pf = popen(cmd, "r")))
		{
			cout << "popen失败 " << strerror(errno) << endl;
			return output;
		}
		while (NULL != fgets(buf, 1024, pf))
		{
			output += buf;
		}
		//cout << output << endl;
		pclose(pf);
		return output;
	}

        windows版:

//只需在popen和pclose前面加上一个下划线

        可以用任何命令行调用这个代码。

(这里是结束)

你可能感兴趣的:(程序员造轮子(我的可重用代码),c语言,开发语言,运行程序,获取程序输出)