![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux
dachunfree
冰冻三尺,非一日之寒
展开
-
【study】僵尸进程
1.僵尸进程的产生。 我们会调用fork,重新开一个子进程。进程由三部分组成:PCB、有关程序段和该程序段对其进行操作的数据结构集。 进程控制块:用于描述进程情况及控制进程运行所需的全部信息。 代码段:是进程中能被进程调度程序在CPU上执行的程序代码段。 数据段:一个进程的数据段,可以是进程对应的程序加工处理的原始数据,也可以是程序执行后产生的中间或最终数据。 重点需要了解下PCB(进原创 2017-07-20 19:50:08 · 238 阅读 · 0 评论 -
sleep func
#include<stdio.h> #include<stdlib.h> #include<signal.h> void handler(int num) { if(num == SIGQUIT) { printf("receive sig num is %d\n",num); } } int main() {原创 2017-11-03 09:00:50 · 156 阅读 · 0 评论 -
review..wait
#include<stdio.h> #include<stdlib.h> #include <sys/types.h> #include <sys/wait.h> #include<signal.h> int main() { pid_t pid = 0; pid = fork(); int status; if(pid < 0)原创 2017-11-01 20:05:31 · 108 阅读 · 0 评论 -
sigaction-sigqueue
#include<stdio.h> #include<stdlib.h> #include<signal.h> #include <unistd.h> /********************************************************************* PCB: block----------pending原创 2017-11-08 09:10:40 · 205 阅读 · 0 评论 -
【study】linux 进程通信之msg
消息队列 消息队列提供了一个从一个进程向另外一个进程发送一块数据的方法 每个数据块都被认为是有一个类型,接收者进程接收的数据块可以有不同的类型值 消息队列也有管道一样的不足,就是每个消息的最大长度是有上限的(MSGMAX),每个消息队列的总的字节数是有上限的(MSGMNB),系统上消息队列的总数也有一个上限(MSGMNI) 对比: 管道:流管道 消息:有边原创 2017-08-28 13:56:33 · 718 阅读 · 0 评论 -
【study】linux 进程通信之管道
1.管道的本质:固定大小的内核缓冲区。 2.管道是半双工的,数据只能一个方向流动。 3.只有调用fork 父子进程才能管道通信。 4.管道的读写规则 一.如果所有管道读端对应的文件描述符被关闭,则write操作会产生信号SIGPIPE. #include #include #include #include #include void handler(int num) { int原创 2017-08-30 09:55:05 · 173 阅读 · 0 评论 -
【linux】信号量
信号量: 互斥:P、V在同一个进程中。 进程A当进行P操作,信号量资源数减1,比如信号量资源个数设置为1,p操作后就会变0. 进程B再进行P操作,信号量资源数变为-1,开始阻塞该进程。进程A进行V操作,释放信号量资源+1,信号量资源数变为0.开始唤醒B进程。B进程执行结束后,执行V操作,释放信号量资源,此时会变为1.#include "sem.h" int sem_creat(i原创 2017-09-06 19:02:47 · 226 阅读 · 0 评论 -
【linux】close与shutdown
了解close与shutdown区别,我们先回忆下文件描述符与进程的关系。代码如下:#include<stdio.h> #include<unistd.h> #include<stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> int main() { char *pathname = "原创 2017-07-26 19:12:40 · 273 阅读 · 0 评论 -
【study】SIGPIPE 信号
如果sever(client)socket已关闭,对等方再发写数据,则会产生SIGPIPE信号。 1.SIGPIPE信号会让进程终止(man 7 signal,阅读SIGPIPE默认ACT) 2.往一个已经接收FIN的套接中写是允许的,接收到FIN仅仅代表对方不再发送数据。 3. 在收到RST段之后,如果再调用write就会产生SIGPIPE信号,对于这个信号的处理我们通常忽略即可。原创 2017-07-24 19:56:49 · 242 阅读 · 0 评论 -
【study】socket结合僵尸进程的处理
按照前两天总结的处理僵尸进程的方法,我们把这些方法应用在socket编程中。socket中,难免会多个client连接server,当client同步退出后,server如何处理子进程呢?(暂时不考虑粘包问题哈,只是简单的读写哦) client代码如下:我们创建5个client,同时连接server server代码如下: gcc编译后 运行 ./client ,./原创 2017-07-22 15:48:57 · 431 阅读 · 0 评论 -
信号量的不解之处
semop函数的不理解: 函数原型: int semop(int semid, struct sembuf *sops, unsigned nsops); semid:创建的semid值,semget中返回 struct sembuf *sops:实际是这样的 struct sembuf sops[],传递一个数组 unsigned nsops:表示数组的个数。即我们要操作几个信号量。*原创 2018-01-04 09:37:36 · 223 阅读 · 0 评论