Linux 系统编程
文章平均质量分 82
Linux API
baboon_chen
My piano is the keyboard
展开
-
多路复用IO:select、poll、epoll
多路IO复用是指单个进程/线程就可以同时处理多个IO请求。用户将想要监视的文件描述符添加到selectpollepoll函数中,由内核监视,函数阻塞。一旦有文件描述符就绪(读就绪或写就绪),或者超时(设置了超时时间),函数就会返回,然后该进程可以进行相应的读/写操作。原创 2023-11-13 10:53:56 · 215 阅读 · 0 评论 -
实际用户ID、有效用户ID、保存的设置用户ID
与进程相关的id简介查看方式如何设置实际用户ID (Real User ID, RUID)进程被创建时的用户ID一般不可更改实际组ID (Real Group ID, RGID)进程被创建时的组ID一般不可更改有效用户ID (Effective User ID, EUID)进程访问文件或其他资源时使用的用户ID有效组ID (Effective Group ID, EGID)进程访问文件或其他资源时使用的组ID。原创 2023-07-22 14:38:32 · 1075 阅读 · 0 评论 -
使用PAPI进行性能测试
PAPI(Performance Application Programming Interface)是一个跨平台的性能计数接口工具集。它提供了一套标准化的API,用于访问硬件性能监测计数器(PMU),在软件中实现高精度的性能分析与优化。PAPI性能测试工具的安装、使用及实例 - Satchmo丶 - 博客园 (cnblogs.com)原创 2023-06-28 13:59:24 · 642 阅读 · 0 评论 -
多进程编程
多进程编程文章目录多进程编程一 、进程的基本概念二、进程的描述2.1、进程控制块(Process Control Block, PCB)2.2、进程标识符PID三、进程的创建3.1、fork3.2、exec3.3、system四、进程的调度五、进程的分类5.1、前台进程5.2、后台进程六、守护进程6.1、守护进程的概念6.2、守护进程的特点6.3、查看守护进程6.4、守护进程的分类6.5、守护...原创 2019-10-23 10:25:16 · 921 阅读 · 0 评论 -
可重入函数
文章目录一、全局变量异步IO可能会造成什么问题?二、什么是可重入函数?1、可重入函数:2、不可重入函数:3、注意事项:一、全局变量异步IO可能会造成什么问题?父子进程分别对累加:#include <stdio.h>#include <signal.h>#include <unistd.h>#include <stdlib.h>// 父子进程分别对n进行累加// 每隔1秒,相互发送信号通知累加int n = 0, flag = 0;voi原创 2021-05-04 12:21:22 · 3312 阅读 · 0 评论 -
时序竟态
文章目录1、pause函数2、什么是时序竟态?3、时序问题分析4、解决时序问题:sigsuspend函数5、总结 1、pause函数#include <unistd.h>int pause(void);/*返回值(成功):-1, 并设置errno为EINTR1、如果信号的默认处理动作是终止进程,则进程终止,pause函数没有机会返回。2、如果信号的默认处理动作是忽略,进程继续处于挂起状态,pause函数不返回。3、如果信号的处理动作是捕捉,则调用完信号处理函数之后,pause原创 2021-05-04 12:05:14 · 262 阅读 · 0 评论 -
mmap、munmap
文章目录一、函数声明二、借助共享内存访问磁盘文件三、mmap使用注意事项四、mmap用于父子进程间通信五、匿名映射区六、mmap用于非血缘关系进程间通信 一、函数声明 #include <sys/mman.h>void *mmap(void *addr, size_t length, int prot, int flags,int fd, off_t offset);/*参数:addr: 建立映射区的首地址,由linux内核指定。使用时,直接传递NULLlength: 欲创建原创 2021-04-24 18:06:13 · 541 阅读 · 0 评论 -
wait、waitpid
文章目录一、孤儿进程二、僵尸进程三、wait四、waitpid一、孤儿进程父进程先于子进程结束,则子进程成为孤儿进程,子进程的父进程变成init进程,负责子进程的回收。 #include <stdio.h>#include <unistd.h>#include <sys/types.h>#include <stdlib.h>int main(void){ pid_t pid = fork(); if(pi原创 2021-04-15 17:38:00 · 244 阅读 · 0 评论 -
Linux文件I/O编程
I/O可以分为 高级I/O 和 低级I/O,高级I/O 通常也称为 带缓冲的I/O,比如 ANSI C库提供的标准I/O库。低级I/O通常也称为不带缓冲的I/O,它是Linux提供的系统调用,如:open、read、write等。带缓冲的I/O在系统调用前采用一定的策略,速度慢,但比不带缓冲的I/O安全,如:fopen、fread、fwrite等。Linux下对文件进行输入输出操作(I/O操...原创 2019-09-17 23:22:36 · 837 阅读 · 1 评论