系统调用核心转储?

Adr*_*ero 5 c linux system-calls

我有一个问题:是否存在生成核心转储的系统调用?

我知道哪个核心转储可以由信号生成,但我想知道它是否可能是从系统调用生成的

cod*_*ker 5

void createdump(void)
{
    if(!fork()) { //child process
        // Crash the app
        abort() || (*((void*)0) = 42);
    }
}
Run Code Online (Sandbox Code Playgroud)

您不想转储的地方调用该函数。这将创建一个子项并使其崩溃。因此,即使不退出程序,您也可以获得转储

  • 为什么不只是在孩子中`abort()`?如果它没有创建转储,大概是因为 `ulimit` 阻止了它,然后 `SIGSEGV` 也不会创建转储。此外,即使 `abort()` 没有创建转储,它也不会返回。所以 OR 和第二个表达式似乎没用。我错过了什么吗? (2认同)