以前看的底层的东西居多,不过底层原厂做的相对完善了,导致底层的工程师总是在做一些硬件+驱动/软件测试的移植工作,很多Linux 精妙的东西没学到,觉得不是Linux内核简单,而是目前的生态链来说,驱动工程师只有原厂有较大锻炼罢了,现在有时间就看看应用的东西吧,写点基础的总结。
1.发送信号命令
kill -信号 要发送的进程id(pid) 例如kill -SIGUSR1 1234
kill -l 查看当前系统支持的信号
2. 能够产生信号的函数
int kill(pid_t pid,int sig);
int raise(int signum); kill函数将信号发送给进程,raise函数允许进程向自身发送信号 raise(signum)相当于kill(getpid(),signum);
alarm函数设置了一个定时器,当定时器到了给当前进程发送SIGALRM信号。 unsigned int alarm(unsigned int seconds); seconds是计时器时间到后时钟的秒数。 如果没有设置其他超时,函数返回0,否则返回值为前面安排超时中保留的秒数。 一个进程只能设置一次超时 把seconds设置为0可以取消前面的超时设置。
abort函数 void abort(void); 该函数发送SIGABRT信号给调用进程,进程不应该忽略这个信号。 即使进程捕捉到SIGABRT这个信号,进程还是会异常退出 让进程捕捉SIGABRT的意图是在进程终止前由其执行所需的清理操作。
注意sleep 以及pause 函数收到信号都会立即返回。
更详细的信号知识请看这篇文章 https://blog.csdn.net/flowing_wind/article/details/79967588