欢迎光临
我们一直在努力

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函数获取命令行返回内容
分享到: 更多 (0)

评论 1

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

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

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

有趣的网站

联系我们联系我们

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

支付宝扫一扫打赏

微信扫一扫打赏