
Linux系统编程
文章平均质量分 90
-出发-
学生一个,正处于学习阶段,希望与大家多多交流
展开
-
Linux系统编程(二)–信号
如同你第一次学习 hello world 一样,这里写一个简单的 hello signal 程序。我的目的是希望借助 hello signal 程序来观察它对信号的反馈。这段代码启动后先打印自己的进程 id 号。接下来就每隔 10 秒的往屏幕打点号,非常简单。运行屏幕打印:接下来,hellosignal 先在屏幕上输出它的 id 号,然后就开始十分缓慢的打点了。(1) 使用 kill 命令再启动一个终端,然后键入 kill -11 14578。hellosignal 报告结果如下:然后 he原创 2022-12-04 23:06:47 · 631 阅读 · 0 评论 -
Linux系统编程--学习目录
Linux系统编程(一)进程基础Linux系统编程(二)信号Linux系统编程【三】进程间通信4 进程间关系5 线程基础6 线程互斥与同步七 线程控制八 高级 IO-记录锁九 高级IO-多路复用十 高级IO-异步IO原创 2022-04-01 22:00:44 · 742 阅读 · 0 评论 -
Linux系统编程(十)--高级IO-异步IO
文章目录1 同步IO与异步IO2 POSIX异步IO(aiocb)3 异步操作状态3.1 aio_error3.2 aio_return4 等待异步IO操作5 异步IO取消操作6 批量请求7 异步通知7.1 两种通知方式7.2 aiocb的成员aio_sigevent7.3 sigevent 的成员1 同步IO与异步IO塞和非阻塞从简单的开始,我们以经典的读取文件的模型举例。(对操作系统而言,所有的输入输出设备都被抽象成文件。)在发起读取文件的请求时,应用层会调用系统内核的I/O接口。如果应用层调原创 2022-03-31 22:25:52 · 1768 阅读 · 0 评论 -
Linux系统编程(九)--高级IO-多路复用
文章目录1 问题提出2 fd_set容器2.1 fd_set的实现2.2 操作fd_set容器3 select函数3.1 参数说明:3.2 select返回值3.3 select与信号4 poll函数5 epoll函数5.1 IO事件5.2 select 与 poll的缺点5.3 使用epoll5.4 epoll_create5.5 epoll_create5.6 epoll_wait6 epoll触发模式6.1 两种触发6.2 边沿触发 + 非阻塞1 问题提出// fd1, fd2, fd3 分别是以原创 2022-03-30 22:20:45 · 659 阅读 · 0 评论 -
Linux系统编程(八)--高级 IO-记录锁
文章目录1 记录锁1.1 概念1.2 加锁解锁2 记录锁测试命令3 记录锁(底层实现)4 记录锁(继承与释放)5 记录锁(尾部加锁)6 建议性锁和强制性锁6.1 提出问题6.2 建议性锁和强制性锁6.3 建议性锁和强制性锁7 单例守护进程1 记录锁1.1 概念对文件的部分字节或所有字节加锁,在多进程之间对指定的字节进行互斥访问。是一种字节范围锁。记录锁通过 fcntl 函数来获取和释放锁,fcntl 的执行命令(cmd 参数)是 F_SETLK (非阻塞)和 F_SETLKW (阻塞)。 F_GET原创 2022-03-29 23:43:33 · 1082 阅读 · 0 评论 -
Linux系统编程(七)--线程控制
文章目录1 线程属性1.1 pthread_attr_t1.2 不同属性的作用2 互斥量的共享属性2.1 属性的初始化与回收2.2 共享属性3 互斥量的鲁棒属性3.1 相关函数3.2 互斥量状态一致性4 递归型互斥量4.1 相关函数4.2 递归类型的互斥量5 其它同步对象的属性5.1 读写锁的属性5.2 条件变量的属性5.3 barrier 属性6 可重入函数(二)7 errno 变量与多线程8 只被执行一次的函数8.1 问题提出8.2 pthread once9 线程私有变量9.1 键类型及相关函数9.2原创 2022-03-27 22:08:29 · 2144 阅读 · 0 评论 -
Linux系统编程(六)--线程互斥与同步
文章目录1 多线程互斥与同步2 互斥量2.1 基本概念2.2 互斥量数据类型2.3 互斥量的加锁解锁3 读写锁rwlock3.1 读写锁三种状态:3.2 读写锁的数据类型3.3 读写锁的加锁解锁4 自己实现互斥锁4.1 mylock 实现4.2 myunlock解锁实现5 自旋锁6 线程同步1 条件变量的数据类型和相关函数2 深入条件变量7 屏障 barrier1 多线程互斥与同步多线程互斥,同一时间只有一个线程访问数据。互斥锁 mutex读写锁 rwlock自旋锁 spinlock多线程同原创 2022-03-25 07:50:18 · 515 阅读 · 0 评论 -
Linux系统编程(五)--线程基础
文章目录1 线程概念1.1 进程到线程1.2 线程资源1.3 进程线程区别2 线程创建与终止2.1 线程创建2.2 线程终止3 线程清理函数1 线程概念1.1 进程到线程多进程之间互相沟通比较麻烦,比如内存共享、描述符共享、互斥与同步。同一个进程中的多线程使用的资源是共享的,比如内存,文件描述符等等。1.2 线程资源线程共享资源:可执行程序的代码,程序的全局内存,堆内存,栈,文件描述符。线程独有资源:线程 ID,线程自己的一套寄存器值,线程运行栈,调度优先级和策略,信号屏蔽字,errno 变原创 2022-03-25 07:43:35 · 354 阅读 · 0 评论 -
Linux系统编程(四)--进程间关系
文章目录1 进程扇与进程链2 进程组2.1 概念2.1 进程组的创建与设置3 会话3.1 概念3.2 创建会话4 控制终端、前台进程组与后台进程组5 后台进程组与控制终端6 孤儿进程与孤儿进程组7 守护进程7.1 守护进程的概念7.2 创建守护进程(调用系统函数)7.3 创建守护进程(自己实现)1 进程扇与进程链进程扇进程扇构造代码// ps_swing.c#include <unistd.h>#include <string.h>#include <stdio原创 2022-03-23 23:11:42 · 992 阅读 · 0 评论 -
Linux系统编程(三) --进程间通信
文章目录1 进程间通信总览1.1 进程间如何通信1.2 Linux IPC 分类1.3 Linux IPC常用手段2 无名管道2.1 pipe 函数2.2 用pipe进行进程间通信3 有名管道3.1 创建 FIFO 类型文件3.2 FIFO文件特性4 System V共享内存4.1 共享内存4.2 IPC 内核对象4.3 获取内核对象的id号4.4 创建IPC内核对象4.5 shmget函数4.6 键值与ftok4.7 shmget函数4.8 shmctl5 System V消息队列5.1 消息队列相关的函原创 2022-03-22 08:24:28 · 576 阅读 · 0 评论 -
Linux系统编程(一) --进程基础
文章目录1.1 基础1.2 fork函数1.3 进程空间1.3.1 进程地址互不影响1.3.2 虚拟地址到物理地址的映射1.3.3 fork函数原理1.3.4 写时复制技术1.4 fork函数与文件共享1.5 exec 系列函数与进程空间结构1.5.1 exec系列函数1.5.2 进程空间结构1.5.3 exec + fork1.6 wait和waitpid1.6.1 僵尸进程1.6.2 wait清理僵尸进程1.6.3 waitpid1.6.4 core 文件1.7 kill命令1.1 基础ps -u原创 2022-03-20 22:32:18 · 1005 阅读 · 0 评论