我正在尝试实现一个检查点函数来对进程进行检查点操作。我是通过派生一个子进程来实现的。但是,我需要在开始时暂停该子进程。稍后,我们可以通过取消暂停子进程并使父进程终止自身来从检查点重新启动。下面是我为checkpoint和restart_from_checkpoint编写的代码,以及如何调用它们的示例。// I need to kill the calling process.我不知道<em
但是我在获取ptrace以识别我要传递给它的进程ID时遇到了一些问题。在执行程序时,我会收到以下错误消息:但是,我已经在调用之前通过将进程ID打印到控制台并使用ps -all进行验证来验证进程ID。以下是一些可能相关的代码(如有必要,我可以发布更多代码):/* Call to be traced */
if (ptrace (PTRACE_T
我正在使用ptrace来跟踪子进程。当子进程正常退出时,它工作得非常好。但是,如果它异常退出,程序将进入无限循环,尽管使用了宏WIFSIGNALED(&status)。下面是子进程示例:int main() int a=5/0;下面是跟踪程序#include <sys/types.h(PTRACE_T
else printf("[PARENT] process id : %d\n" , pid); }上面的程序使用vfork创建进程。这意味着只有一个pid变量的副本。但是当我在child中打印pid变量时,它的值是0。父进程中的相同pid变量给出子进程的进程id。如果只有一个pid变量的副本,这怎么可能。