这是程序的要点:
while(true)
{
//bunch of codes that gets data from port ,
//if there is no data it waits here .
}
我用的是linux,有没有内置的支持像Ctrl+C这样的按键。我可以使用signal(SIGINT, signal_callback_handler);捕捉到这一点,但是Ctrl+C有一些问题,因为它会给出错误。
我想在按键时跳出这个循环,这是可能的吗?如果是,如何操作。
我有一个脚本运行在我的linux服务器的背景上,我希望捕捉到信号,比如重新启动或任何可能杀死这个脚本的东西,而不是在实际退出之前保存任何重要信息。
我想我需要抓住的大部分是,SIGINT,SIGTERM,SIGHUP,SIGKILL。
如何捕捉这些信号并让它执行退出函数,否则继续执行它正在做的任何事情?
伪perl代码:
#!/usr/bin/perl
use stricts;
use warnings;
while (true)
{
#my happy code is running
#my happy code will sleep for a few until it
根据甲骨文的,在信号处理程序内部使用fork()应该是安全的.但是我的进程被卡在信号处理程序中,并跟踪跟踪:
#0 __lll_lock_wait_private () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:95
#1 0x00007f86e6a9990d in _L_lock_48 () from /lib/x86_64-linux- gnu/libc.so.6
#2 0x00007f86e6a922ec in ptmalloc_lock_all () at arena.c:242
#3 0x00
我有一个运行linux命令的C++代码,我想模拟分段错误,即SIGSEGV,同时通过C++代码执行C++命令。所以我的代码是这样的
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发送到通过调用该函数创建的子进程?