在Linux'之后停止创建核心转储文件;这是叉杀 我有下面显示的C++函数,但是它在Linux中创建了一个核心转储文件。有没有办法阻止它创建核心转储文件
PS:“version.out”有时会挂起,因此我正在创建一个新进程,并在1秒后将其终止,以避免程序挂起,并在稍后从/tmp/version获取输出在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
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”?