我可以强制某个进程从该进程外部执行 fork 系统调用吗?

我可以强制某个进程从该进程外部执行 fork 系统调用吗?

假设有一个程序等待用户输入。如果用户输入是“A”,则程序进入状态s_a,如果用户输入是“B”,则程序进入状态s_b。我不知道我需要哪种状态,因此我想尝试两种输入。所以我希望这个程序被分叉,然后我就可以在父进程中输入“A”,在子进程中输入“B”。在linux下可以实现吗?

所以我想要类似命令的东西

$ sudo make_that_process_call_fork_syscall PID

我每秒会执行多次,因此简单地重新启动该程序会非常低效。 (该程序是Coq定理证明助手)。

答案1

不,您不能执行程序fork或任何其他任意系统调用,除非已对其进行编程以执行此操作。一般来说,进程不允许让其他进程执行任意代码,除非通过定义的 API(例如ptrace)。允许这样做会引入许多安全漏洞,即使它仅限于fork.

也许您可以尝试做的最好的事情就是在此时附加到进程,并在出现预期提示时手动gdb调用。fork然而,这可能会给程序带来意想不到的后果,并且通常不是一个好主意。由于您想要运行同一进程的多个副本,因此这不是一种可扩展的方法,您最好尝试其他方法。

相关内容