1、进程是什么?
进程简单点来说就是一个正在运行的程序。
2、进程的一些属性
1)Pid:唯一标识一个进程
1)pcb:进程控制块,描述一个进程的属性信息的结构体
3、进程的状态:
1)运行状态:该进程正在时间片中执行。
2)就绪状态:进程已经做好了准备,只要有时间片空闲就开始执行。
3)阻塞状态:进程在某些事情发生前不能执行,等待阻塞进程的事件完成。
4、信号
信号是在软件层面对中断机制的一种模拟,信号的出现使得进程直接的通信不在是被动的,不在向之前那样,read()操作往往需要等待write()操作结束。因为信号是对中断的一种模拟。既然是中断,那么它的发生就是不确定。就不会发生一个进程阻塞在这里等待另一个进程执行的结果。这样的异步性通信机制无疑是更加强大的。
信号并不是按照程序由上向下执行的,当哪里产生信号就立刻发生中断处理这个信号。
1)信号类型:
通过kill()命令进行对信号的发送;
2)程序中的信号
利用signal()方法进行对信号的调用,信号不会按照程序顺序进行。
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>
#include<assert.h>
#include<signal.h>
void sig_fun(int sig)
{
printf("sig=%d\n",sig);
}
int main()
{
signal(SIGINT,sig_fun); //产生SIGINT信号时,调用sig_fun函数
while(1)
{
printf("main run\n");
sleep(1);
}
exit(0);
}
3)信号的三种处理方式
忽略信号:对信号不做任何处理,就当做没发生任何事情一样。
捕捉信号:定义信号处理函数,当信号发出的时候,执行相应的操作。
执行默认动作:Linux对每一个信号都规定了默认操作