Linux基础学习—popen函数

33 篇文章 0 订阅
11 篇文章 0 订阅

@TOC

1.函数定义

#include <stdio.h>

FILE * popen(const char *command , const char *type );
int pclose(FILE *stream);

2.函数说明

popen()函数通过创建一个管道,调用fork()产生一个子进程,执行一个shell以运行命令来开启一个进程。这个管道必须由pclose()函数关闭,
而不是fclose()函数。pclose()函数关闭标准I/O流,等待命令执行结束,然后返回shell的终止状态。如果shell不能被执行,则pclose()返回的终止状态与shell已执行exit一样。

3.返回值

如果调用fork()或pipe()失败,或者不能分配内存将返回NULL,否则返回标准I/O流。popen()没有为内存分配失败设置errno值。如果调用fork()或pipe()时出现错误,
errno被设为相应的错误类型。如果type参数不合法,errno将返回EINVAL。

system与exec函数只可执行,无法将执行结果打印出来,可用popen函数实现这一步

4.代码测试

#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>

int main()
{
	char ret[1024] = {0}; 
	char *fp;

 	fp = popen("ps","r");
	int n_read = fread(ret,1,1024,fp);

	printf("read %d\n byte,%s\n",n_read,ret);

	return 0;

}

此函数可将ps进程进行打印
学识浅薄,为学习而用。。。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值