2016-12-01 46 views
-1

我创建了一个接收来自另一个进程的命令的应用程序。 有两个退出命令。解决linux内核转储问题

exit:退出主进程(及其线程)并让子进程完成其任务。

现在退出:存在的主要过程(和他的线程),并发出了一个信号,退出子进程

出口命令工作正常,但现在退出它不是,我当我使用它时会收到一条消息“退出(核心转储)”。

exit命令执行此功能。

void processExit(){ 
    /* some code to close opened files and to wait for threads to finish (pthread_join) */ 
    exit(EXIT_SUCCESS); 
} 

exit now命令执行此功能。

void processExitNow(){ 
    signal(SIGQUIT, SIG_IGN); 
    kill(0, SIGQUIT); 
    processExit(); 
} 

所以我觉得核心转储功能引起的。但为什么会发生?我找不到问题。

谢谢。

+1

'SIGQUIT'的目的是生成一个核心转储。使用不同的信号。 http://www.gnu.org/software/libc/manual/html_node/Termination-Signals.html –

+0

@DarkFalcon感谢它的工作!顺便说一句,有没有办法发送一个信号给所有子进程而不发送给父进程呢? –

+0

@DanielOliveira使用孩子的PID。它由'fork()'返回。你不能使用线程,因为它是相同的进程。不要将线程称为子进程。这是一个线程。 – Stargateur

回答