我想创建一个与父进程分离的子进程,这样如果父进程退出,子进程将继续。我在Windows上工作并做到了这一点:
if(CreateProcess(program, arguments, NULL, NULL, FALSE, CREATE_DEFAULT_ERROR_MODE | CREATE_NO_WINDOW | DETACHED_PROCESS, NULL, NULL, &sinfo, &pinfo))
{
CloseHandle(pinfo.hProcess);
CloseHandle(pinfo.hThread);
}
在我的情况下,当孩子在后台执行时,父母继续跑步。如果我在终端中按Ctrl-C来杀死父级,则子级继续执行 - 按预期执行。但是,如果我在Window的任务管理器中杀死了父项,那么孩子也会被杀死。
为什么Ctrl-C与任务管理器中的查杀有区别?是否有任何方法可以确保孩子继续,即使父母在任务管理器中被杀?