我正在使用clone(2)
电话开始新任务。
曾经有CLONE_STOPPED
标志,但它不再存在于当前内核中。
是否有任何技巧可以在Stopped状态下启动任务(等待SIGCONT
实际运行)?
答案 0 :(得分:1)
你不能,在最近的内核中没有办法做到这一点,除非你编写内核模块来做到这一点。
您可以在kernel/fork.c (L1449)中看到内核v2.6.32如何使用它:
if (unlikely(clone_flags & CLONE_STOPPED)) {
/*
* We'll start up with an immediate SIGSTOP.
*/
sigaddset(&p->pending.signal, SIGSTOP);
set_tsk_thread_flag(p, TIF_SIGPENDING);
__set_task_state(p, TASK_STOPPED);
} else {
wake_up_new_task(p, clone_flags);
}
在内核空间中写一个包装函数来做类似的事情应该是可能的(但可以说是微不足道的?)。
答案 1 :(得分:0)
孩子可以在执行SIGSTOP
fn