raise: 发信号给自己 == kill(getpid(), sig)
所需头文件:
#include<signal.h>
#include<sys/types.h>
函数原型:
int raise(int sig);
参数:
函数传入值:sig:信号
函数返回值:
成功 0 出错 ‐1
例程
#include <stdio.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <signal.h>
#include <unistd.h>
int main()
{
pid_t pid;
pid = fork();
if(pid>0)
{
sleep(8);
if(waitpid(pid,NULL,WNOHANG) == 0)
{
kill(pid,9);
}
wait(NULL);
while(1);
}
if(pid == 0)
{
printf("before sig\n");
raise(SIGTSTP);
printf("after sig\n");
}
return 0;
}
编译结果:
sleep延时8秒:
可以看到sleep延时8秒后,父进程由睡眠状态转为运行状态,子进程由停止状态到被wait回收;