Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Linux'之后停止创建核心转储文件;这是叉杀 我有下面显示的C++函数,但是它在Linux中创建了一个核心转储文件。有没有办法阻止它创建核心转储文件_C++_Linux_Fork_Kill - Fatal编程技术网

在Linux'之后停止创建核心转储文件;这是叉杀 我有下面显示的C++函数,但是它在Linux中创建了一个核心转储文件。有没有办法阻止它创建核心转储文件

在Linux'之后停止创建核心转储文件;这是叉杀 我有下面显示的C++函数,但是它在Linux中创建了一个核心转储文件。有没有办法阻止它创建核心转储文件,c++,linux,fork,kill,C++,Linux,Fork,Kill,PS:“version.out”有时会挂起,因此我正在创建一个新进程,并在1秒后将其终止,以避免程序挂起,并在稍后从/tmp/version获取输出 void bVersion(void) { pid_t pid; pid=fork(); if (pid == 0) { system("version.out > /tmp/version"); } else { // wait fo

PS:“version.out”有时会挂起,因此我正在创建一个新进程,并在1秒后将其终止,以避免程序挂起,并在稍后从/tmp/version获取输出

void bVersion(void)
 {
     pid_t pid;
     pid=fork();
     if (pid == 0)
     {
         system("version.out > /tmp/version");
     }
     else
     {
         // wait for 1 second
         sleep(1);
         kill(pid, SIGTERM);
         mverDir("/tmp/qnbversion");
         system("rm /tmp/qnbversion");
     }
 }

setrlimit
函数可用于在调用
RLIMIT\u core
标志并将限制值设置为零的情况下防止核心转储。

在gdb中为您的核心文件获取回溯将非常有用。SIGTERM不会创建核心文件。请注意,当前代码在同时运行多个副本时没有弹性。固定名称,尤其是在
/tmp
等目录中,是一种负担。检查您正在尝试的一些操作的状态也是一个好主意。您应该调查哪个程序正在转储核心。首先尝试
文件核心
(它应该给出哪个程序转储了该核心)。然后,假设它是
version.out
,运行
gdb version.out core
(然后键入
bt
,学习如何使用
gdb
)。核心转储是不好的征兆!我们使用的是Linux的目标,它没有完整的Linux功能,但它是一个被剥离的Linux版本,它没有GDB,我也不能安装它,所以有没有其他方法可以在不使用新进程的情况下从我的C++代码中调用“版本?out”?如果它挂起,就杀了“version.out”?