引言:提到system函数,就不得不提到popen函数,根据system函数的源代码:system函数的执行需要通过调用fork()函数创建一个子进程,子进程通过execl函数调用shell对传参的可执行文件进行实现。这也意味着system函数实现需要依赖execl函数实现自身功能。因此system函数的结果将直接显示在终端上,这样原本运行的结果就无法保存在文件中用于实现信息交互等功能。

NAMEpopen, pclose - pipe stream to or from a processSYNOPSIS#include <stdio.h>FILE *popen(const char *command, const char *type);int pclose(FILE *stream);

popen函数比system在实际应用中的好处:可以获得运行的输出结果。

作用:创建一个连接到另一个进程的管道,然后读其输出或向其输入端发送数据。

原理:创建一个管道,fork一个子进程,关闭未使用的管道端(读端或者写端),执行一个shell运行命令,然后等待命令终止。

参数说明

commmand:是一个指向以 NULL 结束的 shell 命令字符串的指针。这行命令将被传到 bin/sh 并使用 -c 标志,shell 将执行这个命令。

type:只能是读和写的一种,如果是 “r” 则文件指针连接到command的标准输出,则返回的文件指针是可读的;如果是 “w” 则文件指针连接到command的标准输入,则返回的文件指针是可写的。

stream:popen返回的文件指针。

函数的实现:

#include <stdio.h>int main()
{FILE *File;char readBuf[1024] = {0};File = popen("ls","r");fread(readBuf,1024,1,File);printf("%s\n",readBuf);return 0;
}

结果:

如果没有上述打印的内容,实验结果将毫无现象。因此可以通过popen函数读入信息,通过网络的方式发送从而实现多机通信。

pclose函数则用于关闭标准I/O流。如果使用popen函数在 “w” 模式下,则可以继续往标准I/O流中写入内容,直到调用pclose关闭它。

Linux---popen函数相关推荐

  1. linux popen 函数,Linux下使用popen()执行shell命令

    函数原型: #include "stdio.h" FILE popen( const char command, const char* mode ) 参数说明: command: ...

  2. Linux popen函数的使用总结

    函数原型: #include "stdio.h" FILE *popen( const char* command, const char* mode ) 参数说明: comman ...

  3. linux:exec族函数, exec族函数配合fork使用,system 函数,popen 函数

    1.exec族函数 精彩博文: https://blog.csdn.net/u014530704/article/details/73848573 ​ ​ ​ path:   比如说 ./a.out ...

  4. Linux进程编程(PS: exec族函数、system、popen函数)

    目录 1.进程相关概念 程序和进程 查看系统中的进程 ps指令 top指令 进程标识符 使用getpid()获取 父进程,子进程 2.创建进程fork 进程创建发生了什么--C程序的存储空间如何分配 ...

  5. Linux中popen函数的作用小结

    概述 popen()函数通过创建一个管道,调用fork()产生一个子进程,执行一个shell以运行命令来开启一个进程.这篇文章重点给大家介绍Linux中popen函数的作用,感兴趣的朋友一起看看吧 p ...

  6. linux中popen函数,system函数与popen函数

    为了更好的理解system()函数返回值,需要了解其执行过程,实际上system()函数执行了三步操作: fork一个子进程: 在子进程中调用exec函数去执行command: 在父进程中调用wait ...

  7. Linux C popen函数返回Shell命令执行结果

    1.popen() popen():进程I/O函数,与pclose函数一起使用. 1.1函数定义: FILE * popen ( const char * command , const char * ...

  8. python的popen函数

    最近了解了一下python的popen函数的使用,主要是用来执行linux命令 函数使用 使用之前需要导入import os模块 使用方式: os.popen(cmd) 返回值: 返回一个文件句柄 i ...

  9. exec族函数、system函数、popen函数、PATH

    exec族函数函数的作用: 我们用fork函数创建新进程后,经常会在新进程中调用exec函数去执行另外一个程序.当进程调用exec函数时,该进程被完全替换为新程序(在exec都后面的代码不会被得到执行 ...

  10. linux c语言内核函数手册,Linux C函数实例速查手册

    函数学习目录: 第1章 初级I/O函数 1.1 close函数:关闭已经打开的文件 1.2 creat函数:创建一个文件 1.3 dup函数:复制文件描述符 1.4 dup2函数:复制文件描述符到指定 ...

最新文章

  1. Linux vsftp服务
  2. Linux学习总结(7)——阿里云centeros服务器上安装 jdk,tomcat,mysql
  3. 软工实践第三次作业-原型设计
  4. win10系统中环境变量path变成一行显示(配置环境)
  5. 【十二省联考2019】异或粽子【01Trie】【堆】【前k大套路】
  6. Django学习笔记《一》图书管理系统项目挂载到阿里云
  7. 引入外部js如何通知页面其编码格式
  8. java 查看虚拟机状态_深入理解java虚拟机学习笔记(四)虚拟机性能监控与故障处理工具...
  9. 源码分析Dubbo服务注册与发现机制RegistryDirectory)
  10. 【java】为什么 HashMap 的加载因子是0.75?
  11. 基于RRT算法的路径规划实现(matlab)
  12. 基于Python的热门音乐特征数据分析
  13. was mutated while being enumerated
  14. 如今网络技术日新月异,网络架构师们又如何演变?
  15. SQL注入之order by注入与limit注入
  16. 西山居工作室十周年回顾——产品篇
  17. c++获取计算机注册码,在c++中,如何能获得计算机的机器码?
  18. 百度云盘搜索助手 V1.2(可查询提取码,带5个搜索引擎)
  19. 思维导图–云笔记测试的利器(转)
  20. 对比腾讯、163、商务密邮、360加密邮,发加密邮件用哪个更好

热门文章

  1. BioVendor sRAGE蛋白解决方案
  2. 爬虫练习-爬取豆瓣音乐TOP250的数据
  3. 生成男女体重的随机二维数据
  4. uml中的各种符号表示什么意义与关系
  5. Web3中文|美国CFTC起诉赵长鹏事件始末及其影响
  6. 总结过往修电脑的一些经验和教训
  7. Python脚本到Windows可执行程序——Cxfreeze的安装与使用
  8. 白岩松: 走得太远,别忘了当初为什么出发
  9. HBase 内核深度剖析
  10. matlab中repmat函数的用法