
linux
文章平均质量分 52
schedule___
这个作者很懒,什么都没留下…
展开
-
线程
线程概念 进程:有独立的进程地址空间,有独立的PCB。 分配资源的最小单位。 线程:没有独立的进程地址空间,有独立的PCB。 最小执行单位。 ps -Lf 进程ID ---->线程号LWP。CPU最小执行的单位。 线程共享: ...原创 2021-05-06 19:34:23 · 88 阅读 · 0 评论 -
守护进程
守护进程 daemon进程,通常运行在操作系统后台,脱离控制终端,一般不与用户直接交互,周期性等待某个事件发生或执行某一动作。 不受用户登录注销影响。通常采用一d结尾的命名方式。 守护进程创建步骤 fork子进程,让父进程终止。 子进程调用 setsid() 创建新的会话。 根据需要,改变工作目录位置 chdir()。 根据需要,重设umask。 根据需要,关闭、重定向文件描述符。 守护进程业务逻辑。 ...原创 2021-05-05 11:30:25 · 85 阅读 · 0 评论 -
信号
信号相关概念 产生信号 硬件异常产生 除以0 ----> 8)SIGFPE(浮点数列外) float 非法访问内存 ----> 11)SIGSEGV(段错误) 总线错误 ----> 7)SIGBUS 按键产生 Ctrl + c ----> 2)SIGINT (终止,中断) interrupt Ctrl + z ----> 20)SIGTSTP(暂停,停止) terminal C原创 2021-05-05 09:49:16 · 108 阅读 · 0 评论 -
共享内存映射
mmap函数 void *mmap(void *addr, size_t length, int port, int flags, int fd, off_t offset) 作用 创建共享内存映射 参数 addr:指向映射区的首地址。通常传NULL,表示让系统自动分配。 length:共享内存映射区的大小。(<= 文件实际大小) prot:共享内存映射区的读写属性。PROT_READ、PROT_WRITE、PROT_READ|PROT_WRITE flags:标注共享内存的共享属性。MAP_SHAR原创 2021-05-03 20:01:18 · 303 阅读 · 0 评论 -
管道
进程间通信的方式,特征 管道:简单 信号: 开销小 map映射:非血缘关系进程间 socket:稳定 管道 实现原理:内核借助环形队列机制,使用内核缓冲区实现 特征: 伪文件 管道中的数据只能一次读取 数据在管道中这能单向流动 局限性: 自己写,不能自己读 数据不能反复读取 半双工通信 非血缘关系进程间不可用 pipe函数: int pipe(int fd[2]) 参数: fd[0]: 读段 fd[1]: 写段 返回值: 成功,返回0 失败,返回-1设置errno 管道的读写行为 读数据: 管原创 2021-05-03 11:03:10 · 91 阅读 · 0 评论 -
进程
fork 僵尸进程 进程终止,PCB残留,父进程未回收。 由于终止和回收不是并行的,所以所有进程都有这个状态,但是CPU运行速度很快,这个过程很短暂。 孤儿进程 父进程终止,子进程进孤儿院(init) 循环创建子进程 不同: 进程ID fork的返回值 进程运行时间 定时器 未决信号集 共享: 文件描述符 mmap建立的映射区 读时共享,写实复制: 全局变量 gdb调试 set follow-fork-mode child 跟踪子线程 set follow-fork-mode parent e原创 2021-05-03 11:02:12 · 132 阅读 · 1 评论 -
open close read write lseek fcntl
open函数<unistd.h> int open(const char* pathname,int flags) 参数 pathname :路径名 flags:文件打开方式<fcntl.h> O_RDONLY |O_WRONLY |O_RDWR O_APPEND |O_TRUNC |O_CREAT |O_EXCL|O_NONBLOCK 返回值 成功,返回文件描述符fd(整数) 失败,返回-1,设置错误号errno int open(const char* pathname原创 2021-04-25 19:46:18 · 116 阅读 · 0 评论