欢迎光临
我们一直在努力

C语言获取命令行返回内容 | 通过popen函数获取命令行返回内容

在编写Linux程序的时候,在程序内部有些时候会涉及执行一些命令行内容,如ls,cat等命令,执行该命令当然也有的时候需要得到返回内容,如执行ls命令时需要返回当前目录的内容。那么如何操作呢?

答案是popen,通过popen创建一个管道,再执行相关的命令时候通过读取返回文件句柄就可以查看获取到的返回内容了。代码如下:

/*************************************************************************
	> File Name: popen_test.c
	> Author: huangweichao
	> Mail: me@huangea.com 
	> Created Time: Wed 02 May 2018 05:15:32 PM CST
 ************************************************************************/

#include 
#include 
#include 
int main(int argc, const char * argv[])
{
	char sys_line[256];
	char buf_ps[1024];
	FILE * ptr;

	sprintf(sys_line, "ls -l");
	printf("res[%d]:%s :\n",(int)strlen(buf_ps),sys_line);

	if((ptr=popen(sys_line, "r"))!=NULL)
	{
		rewind(ptr);
		while(!feof(ptr))
		{
			fgets(buf_ps, 1024, ptr);
			printf("%s",buf_ps);
		}
		pclose(ptr);
		ptr = NULL;
	}
	else
	{
		printf("popen %s error\n", sys_line);
		return -1;
	}

	return 0;
}

编译以上代码,执行可执行文件,获取到的返回结果打印出来如下:

root@ubuntu:~# ./a.out 
res[1]:ls -l :
total 6541608
-rw-r--r--  1 root    root           562 May  2 17:13 a.c
-rwxr-xr-x  1 root    root          8976 May  2 17:15 a.out
drwxr-xr-x  3 huangea huangea       4096 May  2 12:28 Desktop
drwxr-xr-x  2 huangea huangea       4096 Mar  7 12:06 Documents
drwxr-xr-x  2 huangea huangea       4096 Mar  7 12:06 Downloads
-rw-r--r--  1 huangea huangea       8980 Mar  7 11:44 examples.desktop
drwxr-xr-x  2 huangea huangea       4096 Mar  7 12:06 Music
drwxrwxr-x 13 root    root          4096 Mar  8 10:39 opencv-3.4.0
-rw-r--r--  1 root    root     177152000 Mar  8 10:27 opencv-3.4.0.tar
drwxr-xr-x  2 huangea huangea       4096 Mar  7 12:06 Pictures
-rw-r--r--  1 root    root           766 May  2 17:15 popen_test.c
drwxr-xr-x  2 huangea huangea       4096 Mar  7 12:06 Public
drwxr-xr-x  4 root    root          4096 Mar  9 09:35 robotleo
drwxr-xr-x  2 huangea huangea       4096 Mar  7 12:06 Templates
drwxrwxr-x 16 huangea huangea       4096 Mar 30 16:05 tina2.5
-rw-r--r--  1 root    root    6521346120 Nov 14 16:50 tina2.5.tgz
-rw-r--r--  1 root    root          1290 Apr 25 10:53 usb.c
-rw-r--r--  1 root    root          1616 Apr 20 17:18 usb.o
-rwxr-xr-x  1 root    root          8528 Apr 20 17:19 usbtest
-rw-r--r--  1 root    root            19 May  2 16:52 val.txt
drwxr-xr-x  2 huangea huangea       4096 Mar  7 12:06 Videos
-rw-r--r--  1 root    root          4177 Jan 14  2017 vimrc.zip
-rw-r--r--  1 root    root          4177 Jan 14  2017 vimrc.zip
赞(3) 打赏
未经允许不得转载:huangea的博客 » C语言获取命令行返回内容 | 通过popen函数获取命令行返回内容

评论 1

  1. #1

    相当精彩的博客,羡慕哦!

    ruilong6年前 (2018-05-03)回复

有趣的网站

支持快讯、专题、百度收录推送、人机验证、多级分类筛选器,适用于垂直站点、科技博客、个人站,扁平化设计、简洁白色、超多功能配置、会员中心、直达链接、文章图片弹窗、自动缩略图等...

联系我们联系我们

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏

登录

找回密码

注册