一、管道设置为非阻塞

管道默认读写两端都是堵塞属性,那么怎能才能设置成非阻塞呢?
(1)设置读端非阻塞
获得原来的属性 flag:

 int flags = fcntl(fd[0], F_GETFL);

设置新的属性 flag:

flags = flags | O_NONBLOCK;
fcntl(fd[0], F_SETFL, flags);

(2)设置写端非阻塞:将上述代码 fd[0] 改为 fd[1]即可。

二、管道的读写行为

如图所示:

Linux学习之系统编程篇:管道设置为非阻塞及管道的读写行为相关推荐

  1. Linux学习之系统编程篇:IPC 和管道的基本概念及管道的创建

    一.IPC 概念 IPC: 进程间通信. 进程间通信的常见的 4 中方式: (1)管道 pipe fifo :最简单(但只能在有血缘关系下进行). (2)信号 signal : 属于系统的,所以系统开 ...

  2. Linux学习之系统编程篇:回收子线程资源

    子线程退出后,主控线程也是需要回收子线程资源的. 函数:pthread_ join 阻塞等待线程退出,获取线程退出状态函数说明: int pthread_join(pthread_t thread, ...

  3. Linux学习之系统编程篇:进程回收(wait / waitpid)

    一.wait wait 函数 :阻塞函数,使进程一直处于等待状态,直至进程死亡. (1)头文件: #include <sys/types.h> #include <sys/wait. ...

  4. Linux学习之系统编程篇:利用管道进行进程间通信

    这里我们先补充一个小知识: 父子进程使用 pipe 进行通信时fork 和 pipe 先后的顺序是先 pipe,后 fork,因为父进程先创建管道,再 fork 创建子进程,这样才能是父子进程共享一块 ...

  5. Linux学习之系统编程篇:编写一个守护进程

    需求:写一个守护进程,每隔 2s 获取一次系统时间,将这个时间写入到磁盘文件 #include <stdio.h> #include <stdlib.h> #include & ...

  6. Linux学习之系统编程篇:shm 共享内存及其操作函数

    一.shm 和 mmap 的区别 (1)mmap 是在磁盘上建立一个文件,每个进程地址空间中开辟出一块空间进行映射.shm 每个进程最终会映射到同一块物理内存.shm 保存在物理内存,这样读写的速度最 ...

  7. Linux学习之系统编程篇:ps 和 kill 命令以及父子进程间数据共享模式

    一.ps 和 kill 命令 1.ps 命令 常用方式: ps aux :查看正在运行进程信息(主要查 pid). ps ajx :更加详细(PID. PPID:父进程 id. PGID:进程组 id ...

  8. Linux学习之系统编程篇:MMU(Memory Manager Unit 内存管理单元)

    一.虚拟内存地址 对应于上图的两端,其中 0 - 3G 是用户区 ,3 - 4G 是内核区.编码的内存地址都是虚拟地址. 在3G到4G之间是PCB 进程控制块.从3G到0依次为: (1)命令行参数 和 ...

  9. Linux学习之系统编程篇:杀死 / 取消线程

    函数: int pthread_cancel(pthread_t thread);//参数:线程 ID 注意:并不是调用了 pthread_cancel,就一定能杀死进程, 必须死在"取消点 ...

最新文章

  1. pku 3422 Kaka's Matrix Travels 最大费用最大流
  2. 原生js实现对象的深拷贝及循环引用
  3. oracle的函数索引怎么建,如何创建oracle函数索引
  4. MVC3中的tempdata,viewdata,viewbag总结
  5. Get 与 Post 【总结】 (实例:从a.html到b.aspx传值)
  6. android 关闭软键盘_HTC官方社区明天正式关闭,收入持续下滑或是直接原因
  7. Codeforces Round #211 (Div. 2)
  8. 所谓的inference场景与深度学习终端加速器以及边缘计算和雾计算
  9. Nginx设置Laravel项目中图片防盗链以及禁止地址栏直接访问图片
  10. php获得6个月以前的日期,请问下使用PHP如何获取某个月的所有日期
  11. 中专计算机网络技术试卷,2018年中职对口升学计算机网络技术模拟试题
  12. 时间序列分析(3)| ARMA模型的拟合
  13. java输出date_Java萌新的小小总结:Date日期类数据以给定格式打印输出
  14. Kubernetes(k8s)之日志收集
  15. 知道一点怎么设直线方程_两点直线方程怎么求
  16. 游戏 - PS4 海绵宝宝: 争霸比基尼海滩重注版
  17. 从趋势、风格和文案三方面,分析短视频封面这样设计更吸引人。
  18. sql: substr函数用法
  19. 传统的冒泡排序(一)
  20. 旅行商问题回溯法求解

热门文章

  1. 强化学习中的调参经验与编程技巧(on policy篇)
  2. NLP中各框架对变长序列的处理全解
  3. ICCV 2019 | COCO-GAN:通过条件坐标的部分图像生成
  4. 实录分享 | 计算未来轻沙龙:深度学习工具专场(PPT下载)
  5. 无忧考吧python编译环境不存在_python:flake8找不到不存在的方法
  6. 【Java代码】道格拉斯-普克 Douglas-Peucker 抽稀算法分析及15w个坐标点抽稀到3.7w耗时从360s+优化到365ms接近1000倍的速度提升源码分享(并行流+多线程+泛型)
  7. ClickHouse【环境搭建 01】Linux环境单机版在线安装 Code:210.DB::NetException + Init script is already running 问题处理
  8. com.netflix.zuul.exception.ZuulException: Hystrix Readed time out
  9. 实验2 递归和分治法(二分查找)
  10. 【身份认证及权限控制一】单点登录