重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
标准I/O库提供了两个函数popen和pclose这两个函数,它们的功能是创建一个连接到另一个进程的管道,然后读其输出或向其输入端发送数据。先fork一个子进程,关闭未使用的管道端。
柳林网站制作公司哪家好,找创新互联建站!从网页设计、网站建设、微信开发、APP开发、成都响应式网站建设公司等网站项目制作,到程序开发,运营维护。创新互联建站2013年开创至今到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联建站。
popen() 函数 用 创建管道 的 方式启动一个 进程, 并调用 shell。 因为 管道是被定义成单向的, 所以 type 参数 只能定义成 只读或者 只写, 不能是 两者同时, 结果流也相应的 是只读 或者 只写。
函数popen的原型:
FILE* POPEN(const char* cmdstring,const char* type)
若成功,返回文件指针,若出错,返回NULL
函数popen先执行fork,然后调用exec执行cmdstring,并且返回一个文件指针,如果type是“r”,则文件指针连接到cmdstring的标准输出,如果type是“w”,则文件指针连接到cmdstring的标准输入。
下面是一个测试用例,简单的用下这个函数:
#include
#include
#include
#include
int main()
{
FILE *stream;
FILE *wstream;
char buf[1024];
memset(buf,'\0',sizeof(buf));
stream=popen("ls -l","r");//将”ls -a”的命令通过管道读取(“r”)到stream
wstream=fopen("myopen.txt","w+");//新建一个可写的文件
fread(buf,sizeof(char),sizeof(buf),stream);//将stream中的数据流读取到buf
fwrite(buf,sizeof(char),sizeof(buf),wstream);//将buf的数据写到wstream中
fclose(wstream);
pclose(stream);
return 0;
}
运行结果: