向自己发送终止信号
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 中延迟向我自己的进程发送信号