popen() 可以在调用程序和POSIX shell /usr/bin/sh 要执行的命令之间创建一个管道(请参阅sh-posix(1) )。

popen() 的参数是指向以空字符结尾的字符串的指针,这些字符串分别包含一个shell 命令行和一个I/O 模式,此

模式可以是进行读取的r ,或进行写入的w 。

popen() 可返回一个流指针,这样,当I/O 模式为w 时,便可以通过写入文件stream 来写入到命令的标准输入;

当I/O 模式为r 时,通过从文件stream 读取数据,从命令的标准输出读取数据。

popen() 打开的流应由pclose() 关闭,这需要等待终止关联的进程,然后返回命令的退出状态。

因为打开的文件是共享的,所以类型为r 的命令可用作输入过滤器,类型为w 的命令可用作输出过滤器。

system() 可执行由command 指向的字符串指定的命令。已执行命令的环境就如同使用fork() (请参阅fork(2) )

创建了一个子进程,子进程按以下方式通过调用execl() (请参阅exec(2) )来调用sh-posix(1) 实用程序:

execl("/usr/bin/sh", "sh", "-c", command, 0);

system() 在等待命令终止时将忽略SIGINT 和SIGQUIT 信号,同时阻塞SIGCHLD 信号。如果这会导致应用程

序错过一个终止它的信号,则应用程序应检查system() 的返回值;如果由于收到某个信号而终止了命令,应用程

序应采取一切适当的措施。

system() 不影响除自己创建的一个或多个进程以外的调用进程的任何子进程的终止状态。

在子进程终止之前, system() 不会返回。

linux popen阻塞_linux popen()与system()的区别相关推荐

  1. python中os.system、os.popen、subprocess.popen的区别

    最近项目中需要在python中执行shell脚本,以下解释使用os.system. os.popen和subprocess.popen的区别: 1.os.system 该函数返回命令执行结果的返回值, ...

  2. python 执行命令,并获取结果及执行状态(os.popen、subprocess.Popen、os.system)

    使用时的数据记录整理,有问题请跳过 一.模块 os.popen.subprocess.Popen.os.system 二.具体操作 1. os.popen() import osr = os.pope ...

  3. linux多线程求和_linux 多线程信号处理总结

    linux 多线程信号总结(一) 1. 在多线程环境下,产生的信号是传递给整个进程的,一般而言,所有线程都有机会收到这个信号,进程在收到信号的的线程上下文执行信号处理函数,具体是哪个线程执行的难以获知 ...

  4. linux 非阻塞 socket - Google 搜索

    linux 非阻塞 socket - Google 搜索 linux c实现超时.非阻塞socket的函数select - Yunlu Liu (刘云璐) sites.google.com/site/ ...

  5. 解决CentOS6.x或RedHat Linux 6.x版本不能通过System eth0以固定IP访问外网的问题

    解决CentOS6.x或RedHat Linux 6.x版本不能通过System eth0以固定IP访问外网的问题 参考文章: (1)解决CentOS6.x或RedHat Linux 6.x版本不能通 ...

  6. linux基本命令示例_Linux ps命令– 20个真实示例

    linux基本命令示例 The ps command, short for Process Status, is a command line utility that is used to disp ...

  7. sys和system的区别

    sys和system用户区别 1 )   最重要的区别,存储的数据的重要性不同 sys: 所有oracle的数据字典的基表和视图都存放在sys用户中,这些基表和视图对于oracle的运行是至关重要的, ...

  8. Linux下useradd命令与adduser命令的区别(adduser更适合初级使用者,useradd比较适合有些高阶经验的使用者)

    文章目录 Linux下useradd命令与adduser命令的区别 man useradd man adduser Linux下useradd命令与adduser命令的区别 Linux下创建用户时会用 ...

  9. linux条件变量使用和与信号量的区别

    linux条件变量使用和与信号量的区别 今天在学习进程同步机制的时候看见一句话: 条件变量只能在管程中通过两个原语操作--wait原语和signal原语 于是发出了一个疑问:信号量机制和条件变量同步机 ...

  10. linux中export和source的作用和区别

    linux中export和source的作用和区别 2013-11-12 12:36 1039人阅读 评论(0) 收藏 举报 分类: linux(82) shell与export命令 用户登录到Lin ...

最新文章

  1. 一个winform带你玩转rabbitMQ
  2. HarmonyOS 2面世!是没有退路还是时机成熟?中国操作系统崛起元年或已到来
  3. java io字符输出流_【Java的IO流之文件字符输入输出流 25】
  4. linux 利用yum源安装mysql5.7
  5. javafx_JavaFX在这里留下来!
  6. Leecode刷题热题HOT100(2)——两数相加
  7. [翻译]用表单字段加亮的方式为用户提供友好的界面
  8. [python][turtle]闪瞎眼的晶体管报时
  9. 将Visual Leak Detector集成至Visual Studio 2019
  10. 2022年华为杯中国研究生数学建模竞赛B题思路
  11. 基于微信点餐外卖小程序系统设计与实现 开题报告
  12. JS之向上取整、向下取整、四舍五入等
  13. Android USB编程
  14. [搜索算法]三分搜索初步
  15. 【Java】检查二叉树是否平衡。
  16. MyBatis 的基本工作原理
  17. 家畜育种学(题库及答案)
  18. 东华大学 oj49——修理牛棚
  19. 小米智能家居接入智能家居平台homeassistant的方法
  20. 【图像分类经典网络 | LeNet-5】一切都在孕育之中

热门文章

  1. 如何在ROS环境中解码.bag格式数据
  2. Pytorch中view, transpose, permute等方法的区别
  3. 【题解】【合并序列(水题)P1628】
  4. STM32(一)- 基于固件库的工程模板
  5. 洛谷 P2372 yyy2015c01挑战算周长
  6. Linux之安装虚拟机/虚拟操作系统[VisualBox]
  7. Masonry的使用
  8. SQL2008 行锁使用RowLock
  9. 客户端调用服务器端方法——ASP.NET AJAX(Atlas)、Anthem.NET和Ajax.NET Professional实现之小小比较[转]...
  10. 计算机算法和算法复杂度