Linux C函数Kill

Linux C函数Kill,第1张

你是程序中调用kill函数,还是在命令行调用kill命令?int kill(pid_t pid, int sig)函数有两个参数,一个是进程号,一个是信号如果你输入的进程号是正确的,而进程还在,则信号有可能被该进程忽略了,不知道你发送的信号是几号? 只有SIGKILL SIGSTOP不能被忽略,其它都可以忽略或捕捉。

对于这个信号而言,没有信号响应函数的话,进程应该会异常终止,对于系统已有的信号一般都是有默认处理的,具体的我有点记不得了,搜下其实就知道了.我在网上找了下各信号默认处理方式,你看看吧,对你有没有用信号名称信号说明默认处理SIGABRT 由程序调用 abort时产生该信号。 程序异常结束。 进程终止并且产生core文件SIGALRM timer到期, 有alarm或者setitimer 进程终止SIGBUS总线错误,地址没对齐等。取决于具体硬件。 结束终止并产生core文件SIGCHLD 进程停止或者终止时,父进程会收到该信号。 忽略该信号SIGCONT 让停止的进程继续执行继续执行或者忽略SIGFPE 算术运算异常,除0等。 进程终止并且产生core文件。SIGHUP 终端关闭时产生这个信号进程终止SIGILL代码中有非法指令 进程终止并产生core文件SIGINT终端输入了中断字符ctrl+c 进程终止SIGIO 异步I/O,跟SIGPOLL一样。 进程终止SIGIOT 执行I/O时产生硬件错误 进程终止并且产生core文件SIGKILL 这个信号用户不能去捕捉它。 进程终止SIGPIPE 往管道写时,读者已经不在了,或者往一个已断开数据流socket写数据。 进程终止SIGPOLL 异步I/O,跟SIGIO一样。 进程终止SIGPROF 有setitimer设置的timer到期引发 。 进程终止SIGPWR Ups电源切换时 进程终止SIGQUIT Ctrl+\,不同于SIGINT,这个是会产生core dump文件的。 进程终止并且产生core文件SIGSEGV 内存非法访问,默认打印出segment fault 进程终止并且产生core文件SIGSTOP 某个进程停止执行,该信号不能被用户捕捉。 进程暂停执行SIGSYS 调用 *** 作系统不认识的系统调用。 进程终止并且产生core文件SIGTERM 有kill函数调用产生。 进程终止SIGTRAP 有调试器使用,gdb 进程终止并且产生core文件SIGTSTP Ctrl+z,挂起进程。 进程暂停SIGTTIN 后台程序要从终端读取成数据时。 进程暂停SIGTTOU 后台终端要把数据写到终端时。 进程暂停SIGURG 一些紧急的事件,比如从网络收到带外数据。 忽略SIGUSR1 用户自定义信号 进程终止SIGUSR2 用户自定义信号 进程终止SIGVTALRM 有setitimer产生。 进程终止

返回1是没有权限

man 2 kill

可以查到kill函数的错误返回:EINVAL、EPERM和ESRCH

再看error.h里:

#defineEPERM 1/* Operation not permitted */

#defineESRCH 3/* No such process */

#defineEINVAL 22/* Invalid argument */


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7275697.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-03
下一篇 2023-04-03

发表评论

登录后才能评论

评论列表(0条)

保存