@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进程进行打印
学识浅薄,为学习而用。。。