![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux系统编程
文章平均质量分 72
木易muyi
无
展开
-
I/O多路转接
什么是I/O多路转接?对大量的文件描述符进行I/O事件监控。IO事件包括:可读事件、可写事件、异常事件函数selectint select( int nfds, fd_set *readfds, fd_set *writefds,fd_set *exceptfds, struct timeval *timeout );参数nfds:在下面3个文件描述符集中找到最大的文件描述符,然后+1。参数readfds和writefds和exceptfds:描述符集的指针,可以将它看成是一个数组。这3原创 2022-05-20 17:46:28 · 2584 阅读 · 0 评论 -
getline
getlinegetline源码,根据源码编写自己的getline函数,只保留核心功能,。#define GETDELIM_GROWBY 64/** * @brief 读取一行数据 * * @param lineptr 数据存放缓冲区 * @param n lineptr的大小 * @param stream * @return ssize_t 成功返回读取到的数量,失败返回-1 */ssize_t mygetline( char **lineptr, size_t *n, FIL原创 2022-05-01 21:01:14 · 655 阅读 · 0 评论 -
文件IO缓冲
文件I/O缓冲系统I/O调用和C语言库I/O函数在操作磁盘文件时会对数据进行缓冲介绍read() 和 write() 调用在操作磁盘文件时不会直接发起磁盘访问,而是仅仅在用户空间缓冲区和内核缓冲区高速缓存之间复制数据。在后续某个时刻,内核会将其缓冲区的数据刷新到磁盘。当把缓冲区中的数据取完,这时内核会将文件的下一段内容读入缓冲区。采用这一设计,使 read() 和 write() 调用的操作更为快捷。Linux 内核对缓冲区的大小没有固定上限。受限于:物理内存总量处于其他目的对物理内存的需求原创 2022-04-24 12:12:14 · 212 阅读 · 0 评论 -
Linux内存映射
内存映射按文件分:文件映射:将一个文件的一部分直接映射到调用进程的虚拟内存中匿名映射:没有对应文件,被映射的分页会初始化为0按权限分:私有映射:写时复制,变更不会再底层文件进行共享映射:变更发生在底层文件将上面两两组合:私有文件映射:使用一个文件的内容来初始化一块内存区域私有匿名映射:为一个进程分配新的内存共享文件映射:代替 read() 和 write() 、IPC共享匿名映射:实现相关进程实现类似于共享内存进程执行 exec() 时映射会丢失,但通过 fork()原创 2022-04-20 20:51:06 · 1613 阅读 · 0 评论 -
System V 共享内存
System V 共享内存fork() 创建的子进程会继承其父进程附加的共享内存段API 函数创建或打开共享内存#include <sys/types.h>#include <sys/shm.h>int shmget( key_t key, size_t, int shmflg );参数 key:由 IPC_PRIVATE 或 ftok() 生成的键参数 size:表示需分配共享内存的字节数内核是以系统分页大小的整数被来分配共享内存的,所以会 size 会被提原创 2022-04-19 10:03:57 · 149 阅读 · 0 评论 -
System V 信号量
System V 信号量API 函数创建或打开一个信号量集#include <sys/types.h>#include <sys/sem.h>int semget( key_t key, int nsems, int semflg );成功返回信号集的标识符参数 key:由 IPC_PRIVATE 或 ftok() 返回的键参数 nsems:创建信号集时:nsems 指定信号量的数量,必须大于0获取信号集时:nsems 必须小于等于集合的大小参数 s原创 2022-04-16 14:35:30 · 1129 阅读 · 0 评论 -
ELF目标文件分析
ELF目标文件分析源代码#include <stdio.h>int printf( const char* format, ... );int global_init_var = 84;int global_unint_var;void func1( int i ){ printf( "%d\n", i );}int main( void ){ static int static_var = 85; static int static_var2原创 2022-04-12 16:25:29 · 358 阅读 · 0 评论 -
System V 消息队列
消息队列创建消息队列#include <sys/types.h>#include <sys/msg.h>int msgget( key_t key, int msgflg )成功返回消息队列的标识符,它是消息队列的句柄。失败返回-1和设置error参数 key 是一个键,用于生成唯一的标识符。可由 IPC_PRIVATE或 ftok() 生成。参数 msgflg 是权限位和下面这些位组成:IPC_CREAT:没有于指定 key 对应的消息队列,则新建一个I原创 2022-04-12 10:56:00 · 676 阅读 · 0 评论