网友收藏 一、介绍信号是事件发生时对进程的通知机制。信号是Linux 进程间通信的最古老的方式。信号是软件中断,它是在软件层次上对中断机制的一种模拟,是一种异步通信的方式。信号可以导致一个正在运行的进程被另一个正在运行......
2023-10-10 01:13 阅读
阅读全文 网友收藏 为防止和正常的返回值混淆,系统调用并不直接返回错误码,而是将错误码放入一个名为errno的全局变量中。如果一个系统调用失败,你可以读出errno的值来确定问题所在。errno不同数值所代表的错误消息定义在errno.h中,你也可......
2023-10-13 07:27 阅读
阅读全文 网友收藏 考虑如下场景:为某信号创建处理器函数发起一个阻塞的系统调用,比如,从终端设备调用的read()会阻塞到有数据输入为止。当系统调用遭到阻塞的时候,之前创建了处理器函数的新传递了过来,随即引发对处理器函数的调用。......
2023-10-13 08:08 阅读
阅读全文 网友收藏 总结《Unix/Linux系统编程》中关于使用系统调用进行文件读写的部分涉及opendir、readdir、readlink、open、close、read、write、lseek系统调用1. 打开,读取目录文件目录也是一个文件,但是与普通文件不同,目录文件通过opendir和readdir库函......
2023-10-13 07:39 阅读
阅读全文 网友收藏 文章浏览阅读713次。目录:一、实验环境准备1.1、删除原来的文件1.2、 重新拷贝二、 应用程序如何调用系统调用三、实站环节3.1、从“int 0x80”进入内核函数3.2、 实现 sys_iam() 和 sys_whoami()3.3、修改 Makefile3.4、 用 printk() 调试内......
2024-01-23 19:46 阅读
阅读全文 网友收藏 补充一点 (大文件):通常将存放文件偏移量的数据类型off_t实现为一个有符号的长整形,(之所以采用有符号数据类型是要以 -1 来表示错误情况)对于open,close等系统调用一般来说正常使用基本没什么问题,但是也是有局限性,......
2023-10-10 01:11 阅读
阅读全文 网友收藏 系统调用sys_alarm相关代码:int sys_alarm(long seconds){ int old = current->alarm; if (old) old = (old - jiffies) / HZ; current->alarm = (seconds>0)?(jiffies+HZ*seconds):0; re...
2023-10-13 08:27 阅读
阅读全文 网友收藏 我们在做数据库程序或者IO密集型的程序的时候,通常在更新的时候,比如说数据库程序,希望更新有一定的安全性,我们会在更新操作结束的时候调用fsync或者fdatasync来flush数据到持久设备去。而且通常是以页面为单位,16K一次......
2023-10-13 07:25 阅读
阅读全文 网友收藏 首先看下进程地址空间示意图: 我们简单的说,从低地址到高地址,代码区和数据区,空洞,堆栈区。 在Linux内核源代码情景分析-内存管理之用户堆栈的扩展,我们申请了从堆栈区往下,数据区上面的页面。 在Linux内核......
2023-10-13 07:57 阅读
阅读全文 网友收藏 文章浏览阅读4.7k次,点赞4次,收藏13次。一、文件描述符在 Linux 的世界里,一切设备皆文件。我们可以系统调用中 I/O 的函数(I:input,输入;O:output,输出),对文件进行相应的操作( open()、close()、write() 、read() 等)。打......
2023-11-13 14:27 阅读
阅读全文