欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > 【Linux】进程信号_1

【Linux】进程信号_1

2024/11/30 8:50:35 来源:https://blog.csdn.net/m0_69828905/article/details/139967820  浏览:    关键词:【Linux】进程信号_1

文章目录

  • 八、进程信号
    • 1.信号
  • 未完待续


八、进程信号

1.信号

信号和信号量之间没有任何关系。信号是Linux系统提供的让用户/进程给其他进程发送异步信息的一种方式。
常见信号:
在这里插入图片描述
当信号产生时,可选的处理方式有三种:①忽略此信号。②执行该信号的默认处理动作。③自定义处理信号,这种方式称为捕捉(Catch)一个信号。
可以使用 kill -9 杀掉指定进程。
在这里插入图片描述
kill -2 可以终止指定进程。不是杀死的。
在这里插入图片描述
接下来我们让进程对2号信号做出自定义行为。需要使用 signal 函数。
在这里插入图片描述
Makefile

testSig:Signal.ccg++ -o $@ $^ -std=c++11
.PHONY:clean
clean:rm -f testSig

Signal.cc

#include <iostream>
#include <unistd.h>
#include <sys/types.h>
#include <signal.h>
using namespace std;void handler(int signo)
{// 打印收到的信号cout << "get a signal : " << signo << endl;
}int main()
{signal(SIGINT, handler);while (true){cout << "I am activing, pid : " << getpid() << endl;sleep(1);}return 0;
}

在这里插入图片描述
此时进程当接收到2号信号时,就输出了一句话并没有终止进程。

// 忽略信号 ignoresignal(SIGINT, SIG_IGN);

signal 函数这样设置时,就代表将 SIGINT 信号忽略。
信号可以由 kill 命令产生,也能够从键盘上产生。比如 键盘上的 Ctrl + C 会被操作系统解释成2号信号。


未完待续

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com