向自己发送终止信号

Posted

技术标签:

【中文标题】向自己发送终止信号【英文标题】:Send a kill signal to self 【发布时间】:2021-02-25 13:03:22 【问题描述】:

我有一个运行 linux 命令的 C++ 代码,我想在通过 C++ 代码执行该 linux 命令时模拟段错误,即 SIGSEGV。 所以我的代码是这样的

int main()
    string cmd = "some linux command that should throw seg fault";
    execute_linux_comand(cmd); // Want to simulate segfault coming while executing this command


我应该在“cmd”中输入什么,以便它可以将SIGSEGV发送到调用此函数创建的子进程?

【问题讨论】:

搜索“bash SIGSEGV”会找到this question on codegolf,它有一个 11 个字符的 bash 解决方案。 (有一个 4 个字符的 bash 解决方案,但它更神秘。) execute_linux_comand 是做什么的?如果它启动一个子进程来执行cmd,你可能会kill(pid, SIGSEGV); “将 SEGSEGV 发送到我的函数”是什么意思?您不会将信号发送给函数,而是将它们发送给进程。 execute_linux_admin() 创建一个子进程并执行提供的 linux 命令。 【参考方案1】:

通过这个命令可以给自己发送kill信号

kill -9 $$

【讨论】:

以上是关于向自己发送终止信号的主要内容,如果未能解决你的问题,请参考以下文章

在 linux (ubuntu) 上的 C 中延迟向我自己的进程发送信号

进程间通信的几个知识点[C]

自己理解的tcp三次握手与四次挥手

linux kill命令详解

Amazon S3 是不是向 CloudFront 发送失效信号?

Linux进程信号