![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux
文章平均质量分 60
linux系统编程;linux网络编程
life is learning
这个作者很懒,什么都没留下…
展开
-
Linux多线程编程
线程的概念:轻量级的进程,一个进程内部可以有多个线程,默认情况下一个进程只有一个线程。线程是最小的执行单位,进程是最小的系统资源分配单位。内核实现都是通过clone函数实现的。线程也有自己的PCB。线程非共享资源:线程id处理器现场和栈指针(内核栈)独立的栈空间(用户空间栈)errno变量信号屏蔽字调度优先级线程的优点:提高并发性占用资源小通信方便线程的缺点:调试困难库函数,不稳定对信号支持不好缺点可以克服,优点很突出。线程的操作函数int pthread_crea原创 2021-02-07 22:50:56 · 130 阅读 · 0 评论 -
守护进程
会话:进程组的更高一级,多个进程组对应一个会话。进程组:多个进程在同一个组,第一个进程默认是进程组的组长。创建会话的时候,组长不可以创建,必须是组员创建。创建会话的步骤:创建子进程,父进程退出,子进程自当会长。守护进程的步骤(红色必须步骤):1.创建子进程fork2.父进程退出3.子进程当会长setid4.切换工作目录$HOME5.设置掩码 umask6.关闭文件描述符0,1,2,为了避免浪费资源7.执行核心逻辑8.退出#include <stdio.h>#inclu原创 2021-02-07 22:47:58 · 60 阅读 · 0 评论 -
进程间通信--信号
特点:简单,不能带大量的信息,满足特定条件发生。机制:进程B发送给进程A,内核产生信号,内核处理。产生:1.按键产生:ctrl+c ctrl+z ctrl+2.调用函数:kill raise abort3.定时器:alarm setitimer4.命令产生:kill5.硬件异常:段错误,浮点型错误,总线错误,SIGPIPE状态:1.产生2.递达 信号到达并且处理完3.未决 信号被阻塞了默认处理方式:1.忽略2.执行默认动作3.捕获4要素:1.编号2.事件3.名称4.默原创 2021-02-07 22:47:04 · 137 阅读 · 0 评论 -
进程间通信--mmap
//mmap.c#include <stdlib.h>#include <stdio.h>#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>#include <sys/mman.h>#include <fcntl.h>#include <string.h>int main(int argc, char const *a原创 2021-02-07 22:39:49 · 357 阅读 · 0 评论 -
进程间通信--管道
pipe管道实现原理: 内核借助环形队列机制,使用内核缓冲区实现。特点: 1. 伪文件;2. 管道中的数据只能一次读取;3. 数据在管道中,只能单向流动。局限性:1. 自己写,不能自己读;2. 数据不可以反复读;3. 半双工通信;4. 血缘关系进程间可用。#include <stdio.h>#include <unistd.h>#include <sys/types.h>#include <sys/wait.h>int main(int ar原创 2021-02-07 22:35:39 · 125 阅读 · 0 评论 -
Linux多进程编程
fork函数pid_t fork(void)创建子进程。父子进程各自返回。父进程返回子进程pid。 子进程返回 0。#include <stdio.h>#include <unistd.h>#include <stdlib.h>int main(){ printf("Begin... "); pid_t pid = fork(); if (pid < 0) { perror("fork err");原创 2021-02-07 21:52:42 · 80 阅读 · 0 评论