news 2026/4/16 9:25:01

Linux环境编程第四天笔记

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux环境编程第四天笔记

Linux环境编程第四天笔记

进程的语言

管道
  • 管道是一种特殊的文件

  • 管道是Linux中最基础的进程间通信机制,分为无名(匿名)管道和无名管道

  • 管道默认是半双工通信方式(数据只能在一个方向上流动)

  • 管道中的数据读取后会从管道中删除,不支持随机访问(使用lseek)。

  • 默认情况下,读端无数据时,读进程阻塞。写端管道满时,写进程阻塞。

  • 管道一旦创建成功,会返回两个文件描述符,读端对应fd[0],写端对应fd[1]。

无名管道(PIPE)
  1. 无名管道是临时文件,随进程的退出而销毁。

  2. 没有名字,无法使用open()

  3. 无名管道只能用于具有亲缘关系的进程间通信。

  4. 只能用于亲缘进程之间通信

  5. 半双工工作方式:读写端分开

  6. 写入操作不具有原子性,只能一对一通信

有名管道(FIFO)
  1. 有名管道的文件持久存在于文件系统中,需手动删除。

  2. 有名字,存储于普通文件系统中。(非临时,删除需手动删除)

  3. 任何具有相应权限的进程都可以使用open()来获取FIFO的文件描述符

  4. 和普通文件一样:使用统一的read()和write()来读写。

  5. 具有写入原子性,支持多写者同时写操作

pipe()

创建无名管道

返回值: 成功:返回 0,失败:返回 -1,并设置 errno

#include <unistd.h> ​ int pipe(int fd[2]);//fd[0]为读端,fd[1]为写端
mkfifo()

用于创建有名管道文件,只创建,需使用open打开

返回值:成功:返回0;失败:返回-:1;

#include <sys/types.h> #include <sys/stat.h> ​ int mkfifo(const char *pathname, mode_t mode);
  • pathname:FIFO的路径名

  • mode:权限模式(类似文件权限:r (读) = 4,w (写) = 2,x (执行) = 1,(无) = 0)

access()

用于检查当前进程对指定文件或目录的访问权限

返回值:成功:返回0;失败:返回:-1;

#include <unistd.h> ​ int access(const char *pathname, int mode);
mode的可选项说明
F_OK0检查文件是否存在
R_OK4检查是否有读权限
W_OK2检查是否有写权限
X_OK1检查是否有执行权限
信号

信号是一种特殊的IPC(进程间通信),大部分信号是异步的(进程无法预料什么时候收到信号,收到什么信号)。

信号共有62个,前31个(1~31)是从UNIX继承下来的,被称为非实时信号或不可靠信号;

后31个(34~64)是Linux新增的,被称为实时信号或可靠信号

非实时信号
  1. 非实时信号优先级相同,不排队,信号的响应会相互嵌套

  2. 每个信号都有对应的一个特定的系统事件

  3. 就绪队列中的非实时信号响应无固定顺序

  4. 就绪队列中的多个相同的非实时信号仅响应一次,其余会被丢弃

  5. 非实时信号中的 SIGKILL 和 SIGSTOP 这两个信号无法被忽略、无法被捕捉、无法被阻塞,只能按照缺省动作进行响应

实时信号
  1. 无具体对应的系统事件

  2. 实时信号优先级高于非实时信号,实时信号的值越大优先级越高

  3. 就绪队列中的事实信号按优先级从高到低依次响应

  4. 就绪队列中的多个相同的实时信号全部都会被响应,不会被丢弃

  5. 高优先级的信号会打断正在执行的低优先级信号

Linux 对信号的响应有三种方式:

  1. 执行缺省动作:比如SIGINT默认终止进程,SIGSEGV默认终止并生成 core 文件。

  2. 忽略信号:通过signal(SIGINT, SIG_IGN)注册,表示内核收到该信号后不做任何处理。

  3. 自定义响应:通过sa_handlersa_sigaction注册自定义函数,内核会在信号到达时调用该函数。

31个非实时信号
编号信号名称默认动作说明
1SIGHUP终止终端挂起或控制进程终止
2SIGINT终止键盘中断(Ctrl+C)
3SIGQUIT终止+核心转储键盘退出(Ctrl+\)
4SIGILL终止+核心转储非法指令
5SIGTRAP终止+核心转储调试断点
6SIGABRT终止+核心转储abort() 产生的信号
7SIGBUS终止+核心转储总线错误(内存访问错误)
8SIGFPE终止+核心转储浮点异常
9SIGKILL终止(不可捕获/忽略)强制终止信号
10SIGUSR1终止用户自定义信号1
11SIGSEGV终止+核心转储无效内存引用
12SIGUSR2终止用户自定义信号2
13SIGPIPE终止管道破裂(写入无读端的管道)
14SIGALRM终止定时器超时(alarm())
15SIGTERM终止优雅终止信号(kill默认)
16SIGSTKFLT终止协处理器栈错误(少用)
17SIGCHLD忽略子进程状态改变
18SIGCONT继续继续已停止的进程(不可忽略)
19SIGSTOP停止(不可捕获/忽略)暂停进程执行
20SIGTSTP停止终端停止信号(Ctrl+Z)
21SIGTTIN停止后台进程读终端
22SIGTTOU停止后台进程写终端
23SIGURG忽略套接字紧急数据
24SIGXCPU终止+核心转储超出CPU时间限制
25SIGXFSZ终止+核心转储超出文件大小限制
26SIGVTALRM终止虚拟定时器超时
27SIGPROF终止性能分析定时器超时
28SIGWINCH忽略窗口大小改变
29SIGIO终止I/O就绪(同SIGPOLL)
30SIGPWR终止电源失效
31SIGSYS终止+核心转储无效系统调用
31个实时信号
编号信号名称
34SIGRTMIN
35SIGRTMIN+1
......
63SIGRTMIN+29
64SIGRTMAX/SIGRTMIN+30
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/13 21:47:23

基于Thinkphp和Laravel的智慧社区物业缴费管理系统的设计与实现_2p760_

目录 智慧社区物业缴费管理系统的设计与实现系统架构设计核心功能模块技术实现特点应用效果评估 项目开发技术介绍PHP核心代码部分展示系统结论源码获取/同行可拿货,招校园代理 智慧社区物业缴费管理系统的设计与实现 该系统基于ThinkPHP和Laravel框架开发&#xff0c;旨在解决…

作者头像 李华
网站建设 2026/4/14 16:41:12

我把测试报告生成为“可分享链接”,一键发给客户

测试报告分享的痛点与变革机遇 在软件开发生命周期中&#xff0c;测试报告是沟通团队与客户的桥梁&#xff0c;它汇总了缺陷、通过率、风险等关键数据&#xff0c;直接影响项目决策和客户信任。然而&#xff0c;传统分享方式——如邮件附件、手动上传云盘——常导致版本混乱、…

作者头像 李华
网站建设 2026/4/15 3:43:25

基于Thinkphp和Laravel的健身房管理系统_bgnk6

目录 基于ThinkPHP和Laravel的健身房管理系统主要功能模块技术实现系统优势 项目开发技术介绍PHP核心代码部分展示系统结论源码获取/同行可拿货,招校园代理 基于ThinkPHP和Laravel的健身房管理系统 该系统是一个结合ThinkPHP和Laravel框架开发的健身房管理平台&#xff0c;旨在…

作者头像 李华
网站建设 2026/4/14 14:26:32

计算机毕设 java 基于 CSS 的罗技购物网站 基于 SpringBoot 的罗技产品电商平台 Java 罗技数码产品购物管理系统

计算机毕设 java 基于 CSS 的罗技购物网站 7763n9&#xff08;配套有源码 程序 mysql 数据库 论文&#xff09;本套源码可以先看具体功能演示视频领取&#xff0c;文末有联系 可分享在电商行业快速发展的背景下&#xff0c;罗技产品的线上销售面临商品展示不直观、订单管理繁琐…

作者头像 李华
网站建设 2026/3/30 4:10:19

用Python读取和处理NASA公开API数据

SQLAlchemy是Python中最流行的ORM&#xff08;对象关系映射&#xff09;框架之一&#xff0c;它提供了高效且灵活的数据库操作方式。本文将介绍如何使用SQLAlchemy ORM进行数据库操作。目录安装SQLAlchemy核心概念连接数据库定义数据模型创建数据库表基本CRUD操作查询数据关系操…

作者头像 李华
网站建设 2026/4/15 23:58:11

usb3 协议

一、 基本概念 低频周期性信令&#xff08;LFPS&#xff0c;Low frequency periodic signaling&#xff09; Low frequency periodic signaling (LFPS) is used for side band communication between the two ports across a link that is in a low power link state. It is al…

作者头像 李华