Linux基础学习2

Linux基础学习2

    • popen函数

popen函数

https://blog.csdn.net/yzy1103203312/article/details/78483566

https://blog.csdn.net/xy1413_/article/details/127135608

典型用法:

    FILE * fp = popen("ifconfig eth0", "r");  if (!fp) {  fprintf(stderr, "Erro to popen");  }  while (fgets(buf, BUF_SIZE, fp) != NULL) {fprintf(stdout, "%s", buf);  }  pclose(p_file); // 注意这里相当于同步等待popen的子进程命令执行完毕

注意:
popen返回的fp是标准输入输出流对象也就是说当模式是"r"时通过fp能读到其它所有进程写到标准输出流中的内容,所以上面的while (fgets)循环,可能会读到其它子进程的输出命令,读到的EOF或者命令执行出错也可能是来自其它进程的(只是概率比较低)
真正能保证popen要执行的命令能完成的是下面的pclose(),它会同步等待子进程退出,从而能保证命令真正执行完毕。
在这里插入图片描述

另外,在使用popen函数执行命令时,调用fgets函数时会读取到EOF的情况有以下几种:

  1. 子进程执行完毕,关闭了标准输出流,此时fgets函数会读取到EOF。

  2. 父进程关闭了popen返回的文件指针,此时fgets函数会读取到EOF。

  3. 发生了错误,例如子进程意外终止或者popen函数调用失败,此时fgets函数会读取到EOF。

需要注意的是,如果命令执行过程中没有输出,fgets函数不会读取到EOF,而是会一直阻塞等待输入。因此,在使用popen函数时,需要注意处理fgets函数读取到EOF的情况,以避免程序出现异常。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/93581.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微服务-sentinel详解

文章目录 一、前言二、知识点主要构成1、sentinel基本概念1.1、资源1.2、规则 2、sentinel的基本功能2.1、流量控制2.2、熔断降级 3、控制台安装3.1、官网下载jar包3.2、启动控制台 4、项目集成 sentinel4.1、依赖配置4.2、配置文件中配置sentinel控制台地址信息4.3、配置流控4…

ps beta 2.5的妙用

1、https://pan.baidu.com/s/1CCw6RGlzEJ7TPWou8pPADQ?pwd2023 2、下载新便携版。 3、解压到c:\myapp文件夹下。 4、运行。 5、登录us账号。 6、使用智能移除。 效果如下: 使用滤镜。 先将C:\myApp\(新便携版)Adobe Photoshop (25.0.0 m22…

MFC网络编程简单例程

目录 一、关于网络的部分概念1 URL(网址)及URL的解析2 URL的解析3 域名及域名解析3 IP及子网掩码4 什么是Web服务器5 HTTP的基本概念6 Socket库概念7 协议栈8 Socket库收发数据基本步骤 二、基于TCP的网络应用程序三、基于UDP的网络应用程序 一、关于网络的部分概念 1 URL(网址…

只考一门数据结构!安徽工程大学计算机考研

安徽工程大学 考研难度(☆) 内容:23考情概况(拟录取和复试分析)、院校概况、23专业目录、23复试详情、各专业考情分析、各科目考情分析。 正文992字,预计阅读:3分钟 2023考情概况 安徽工程大…

Kotlin inline、noinline、crossinline 深入解析

主要内容: inline 高价函数的原理分析Non-local returns noinlinecrossinline inline 如果有C语言基础的,inline 修饰一个函数表示该函数是一个内联函数。编译时,编译器会将内联函数的函数体拷贝到调用的地方。我们先看下在一个普通的 kot…

LNMP架构之搭建Discuz论坛

LNMP 一、编译安装Nginx1)前置准备2)开始编译安装3)添加到系统服务(systemd启动) 二、编译安装MySQL服务1)前置准备2)编译安装3)编辑配置文件4)更改mysql安装目录和配置文…

Redis-Cluster集群操作--添加节点

一、环境部署 部署好Redis-Cluster集群,参考上个本人的博客:Redis-Cluster集群的部署(详细步骤)_是胡也是福的博客-CSDN博客 新准备一台机器,修改主机名,关闭防火墙和selinux,参考&#xff1a…

ELK高级搜索(三)

文章目录 11.索引Index入门11.1 索引管理11.2 定制分词器11.3 type底层结构11.4 定制dynamic mapping11.5 零停机重建索引 12.中文分词器 IK分词器12.1 Ik分词器安装使用12.2 ik配置文件12.3 使用mysql热更新 13.java api 实现索引管理14&…

CVE-2023-23752:Joomla未授权访问漏洞复现

CVE-2023-23752:Joomla未授权访问漏洞复现 前言 本次测试仅供学习使用,如若非法他用,与本文作者无关,需自行负责!!! 一.Openfire简介 Joomla是一个免费的开源内容管理系统(CMS&a…

9、监测数据采集物联网应用开发步骤(7)

源码将于最后一遍文章给出下载 监测数据采集物联网应用开发步骤(6) 串口(COM)通讯开发 本章节测试使用了 Configure Virtual Serial Port Driver虚拟串口工具和本人自写的串口调试工具,请自行baidu下载对应工具 在com.zxy.common.Com_Para.py中添加如下内容 #RS…

matlab的基本使用

matlab的基本使用,可以参考如下的教程:matlab教程 本文针对基本内容进行记录。 matlab简介 MATLAB是美国MathWorks公司出品的商业数学软件,用于数据分析、无线通信、深度学习、图像处理与计算机视觉、信号处理、量化金融与风险管理、机器人&…

浅谈多人游戏原理和简单实现。

😜作 者:是江迪呀✒️本文关键词:websocket、网络、原理、多人游戏☀️每日 一言:这世上有两种东西无法直视,一是太阳,二是人心! 一、我的游戏史 我最开始接触游戏要从一盘300游戏…