news 2026/6/23 10:56:44

35、Linux 系统中的 I/O、进程控制与进程间通信

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
35、Linux 系统中的 I/O、进程控制与进程间通信

Linux 系统中的 I/O、进程控制与进程间通信

1. 信号处理与系统调用信息

在 Linux 系统中,进程处理信号时需谨慎。若进程忽略从键盘生成的 SIGINT 信号,且在未检查是否忽略该信号的情况下捕获它,那么 Shell 所做的安排可能会失效。此外,像 vi 编辑器这类交互式工具,常借助键盘中断使程序回到顶层,这可通过信号捕获与 longjmp 机制结合实现。

当信号处理函数返回,或者进程在被 ctrl + z(SIGTTSP)停止后恢复时,进程会从被中断的精确位置继续执行。对于被中断的系统调用,外部 errno 会被设为 EINTR,且系统调用返回 -1。若进程在从键盘读取输入时被中断,可能会丢失中断前部分输入的行。

若想获取 Linux 系统调用列表,可查看 syscall 的 HTML 版手册页,syscall 是用于发起所有系统调用的系统调用。可从相关资源页面找到该手册页。还有示例代码展示了如何使用 syscall,如 ex11/sysopen.c。POSIX 标准文档可从 IEEE 购买。

2. I/O 描述符与系统调用

所有打开的 I/O 通道都由 I/O 描述符表示。借助 I/O 描述符,Linux 内核能统一处理文件、设备和进程间的 I/O,这为 I/O 编程带来了极大的灵活性和便利性。C 程序进行 I/O 操作时,可使用低级系统调用或高级标准 I/O 库例程。I/O 描述符由小整数标识,三个预打开的描述符 0、1 和 2 分别让每个进程访问标准输入、输出和错误输出。

除了一套完整的文件操作调用,Linux 还提供了一组用于访问目录的库函数。文件和目录相关的系统调用总结如下表:
|

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/23 19:08:38

SElinux策略文件配置

SElinux策略文件配置 经过前面的一大堆理论的学习,我们知道,还需要编写相关的规则文件,才能通过 SElinux 的检测 Selinux权限配置及安全上下文文件目录:编译selinux_policy 所以在device下搜索emulator_x86_64的关键字&#xff0c…

作者头像 李华
网站建设 2026/6/23 19:12:36

瑞士发布国家级开源大模型Apertus:AI公共基础设施的全球新范式

瑞士发布国家级开源大模型Apertus:AI公共基础设施的全球新范式 【免费下载链接】Apertus-70B-Instruct-2509-unsloth-bnb-4bit 项目地址: https://ai.gitcode.com/hf_mirrors/unsloth/Apertus-70B-Instruct-2509-unsloth-bnb-4bit 在全球人工智能竞赛愈演愈…

作者头像 李华
网站建设 2026/6/23 19:46:21

5、内核调试技术全解析

内核调试技术全解析 1. 内核调试的挑战与支持 内核编程面临着独特的调试挑战。内核代码难以在调试器下执行,也不易进行跟踪,因为它是一组与特定进程无关的功能。内核代码错误极难重现,一旦出错可能导致整个系统崩溃,破坏用于追踪错误的大量证据。 为了应对这些挑战,开发…

作者头像 李华
网站建设 2026/6/23 13:39:55

8、Linux内核中的时间处理、延迟与异步工作调度

Linux内核中的时间处理、延迟与异步工作调度 在Linux内核开发中,处理时间相关的问题是非常重要的一部分。本文将深入探讨内核中时间测量、获取当前时间、延迟执行以及异步工作调度的相关内容。 1. 测量时间间隔 内核通过定时器中断来跟踪时间的流逝。定时器中断由系统的定时…

作者头像 李华
网站建设 2026/6/23 19:46:09

10、与硬件通信:I/O端口和内存的使用指南

与硬件通信:I/O端口和内存的使用指南 1. 硬件通信基础 在Linux设备驱动的开发中,实现与真实设备的交互需要考虑硬件因素。驱动程序作为软件概念和硬件电路之间的抽象层,需要与两者进行通信。本文主要介绍驱动程序如何在不同的Linux平台上访问I/O端口和I/O内存。 为了便于…

作者头像 李华