C语言调用System命令并获取命令的返回值

原创 2016年10月20日 15:48:15
<span style="font-family: Arial, Helvetica, sans-serif;">#include <string.h></span>
/* just get lastest info */
int _System(const char * cmd, char *pRetMsg, int msg_len)
{
	FILE * fp;
	char * p = NULL;
	int res = -1;
	if (cmd == NULL || pRetMsg == NULL || msg_len < 0)
	{
		printf("Param Error!\n");
		return -1;
	}
	if ((fp = popen(cmd, "r") ) == NULL)
	{
		printf("Popen Error!\n");
		return -2;
	}
	else
	{
		memset(pRetMsg, 0, msg_len);
		//get lastest result
		while(fgets(pRetMsg, msg_len, fp) != NULL)
		{
			printf("Msg:%s",pRetMsg); //print all info
		}

		if ( (res = pclose(fp)) == -1)
		{
			printf("close popenerror!\n");
			return -3;
		}
		pRetMsg[strlen(pRetMsg)-1] = '\0';
		return 0;
	}
}

int main()
{
	//test cmd
    char *cmd = "lsmod";
    char a8Result[128] = {0};
    int ret = 0;
    ret  = _System(cmd, a8Result, sizeof(a8Result));
    printf("ret = %d \na8Result = %s\nlength = %d \n", ret, a8Result, strlen(a8Result));
    return 0;
}

简单的实例,C语言调用System命令,并且取得返回值(提供一个思路),代码仅仅返回的是最后一行的信息。

如果获取所有的内容,可以使用链表保存每一行数据即可!


相关文章推荐

Linux system函数返回值

例:status = system("./test.sh");1、先统一两个说法:(1)system返回值:指调用system函数后的返回值,比如上例中status为system返回值(2)shell...
  • cheyo
  • cheyo
  • 2011年07月10日 13:33
  • 43246

通过system返回值判断 命令是否正确执行

system(执行shell 命令)       表头文件               #i nclude       定义函数               int system(cons...

system函数返回值

system(执行shell 命令)   相关函数  fork,execve,waitpid,popen   表头文件  #include   定义函数  int system(const ...

Linux中用C语言执行shell命令并获取返回结果

最近在项目中用到了C语言执行shell命令的问题,调查了一下,一般有system函数、exec族函数,但是还不太清楚怎么获取shell命令执行的返回信息。 例如执行一个ifconfig命令,肯定需要获...

C语言调用System命令并获取命令的返回值

/* just get lastest info */ int _System(const char * cmd, char *pRetMsg, int msg_len) { FILE * fp; ...
  • vc66vcc
  • vc66vcc
  • 2016年12月07日 17:35
  • 670

C语言 system函数

Windows函数windows操作系统下system () 函数详解(主要是在C语言中的应用) 函数名: system功 能: 发出一个DOS命令用 法: int system(char *comm...
  • Augusdi
  • Augusdi
  • 2014年02月26日 21:43
  • 23637

C语言执行Linux的shell命令并获得返回值

popen函数执行命令后,返回一个指向该命令输出的文件句柄,接下来就可以用fgets等文件操作函数去读取输出结果。   #include #include int main(...
  • ypist
  • ypist
  • 2012年12月28日 12:39
  • 8709

进程间通信:管道及命名管道(代码实现)

管道:1.管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道;             2.只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程);             3...

利用管道获取控制台程序的标准输出

1.该程序调用控制台程序hello.exe,通过管道获取到hello.exe的标准输出数据,并打印到当前程序的标准输出。 #include #include #include using n...

运行.exe文件并获取返回值(使用WinExec和system的区别)

运行.exe文件并获取返回值,使用WinExec和system有所区别:前者只能返回.exe是否成功被调用,后者可以返回.exe源码中main函数的return值。...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C语言调用System命令并获取命令的返回值
举报原因:
原因补充:

(最多只允许输入30个字)