关于kill与signal函数
kill()与signal实际上是一套信号的发射与接受
kill命令在初学时,习惯上用作杀死进程
但是实际上kill函数的功能是发送信号给进程
(终止进程的时候发送SIGTERM信号)
头文件
#include
(#include
函数原型
int kill(pit_t pid,int sig )
sig是信号类型
函数的返回值,成功返回0,失败返回-1;
信号的设置函数signal
NAME
signal - ANSI C signal handling
SYNOPSIS
#include
typedef void (*sighandler_t)(int);sighandler_t signal(int signum, sighandler_t handler);
signum是指定的信号代码
后面的hander可以是自定义的信号处理函数
或者SIG_IGN,SIG_DFL;
附上一段代码
#include
#include
#include
#include
#include
//#include
//#include int my_alarm()
{printf("ding~~~\n");
}
int main()
{pid_t new_pid;new_pid=fork();if(new_pid==-1)perror("[err]");if(new_pid>0){printf("parent\n");(void )signal(SIGALRM,my_alarm);wait(NULL);exit(1);}if(new_pid==0){printf("child\n");int i;for(i=0;i<5;i++)sleep(1);kill(getppid(),SIGALRM);exit(0);
return 0;
}
关于kill命令具体解释:
http://c.biancheng.net/view/1068.html
C语言wait()函数:结束(中断)进程函数(常用)
相关函数:waitpid, fork
头文件:#include
定义函数:pid_t wait (int * status);
函数说明:wait()会暂时停止目前进程的执行, 直到有信号来到或子进程结束. 如果在调用wait()时子进程已经结束, 则wait()会立即返回子进程结束状态值. 子进程的结束状态值会由参数status 返回, 而子进程的进程识别码也会一快返回. 如果不在意结束状态值, 则参数 status 可以设成NULL. 子进程的结束状态值请参考waitpid().
返回值:如果执行成功则返回子进程识别码(PID), 如果有错误发生则返回-1. 失败原因存于errno 中.
范例
#include
#include
#include
#include
main()
{
pid_t pid;
int status, i;
if(fork() == 0)
{
printf(“This is the child process. pid =%d\n”, getpid());
exit(5);
}
else
{
sleep(1);
printf(“This is the parent process, wait for child…\n”;
pid = wait(&status);
i = WEXITSTATUS(status);
printf(“child’s pid =%d . exit status=^d\n”, pid, i);
}
}
执行:
This is the child process. pid=1501
This is the parent process, wait for child…
child’s pid =1501, exit status =5
关于wait(NULL)
等待子进程退出。NULL的意思是退出状态不关注。如果要获取退出状态应该写成wait(&status);
有问题加qq2410474020
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
