只是一个简单的问题,如果我克隆一个进程,则克隆的进程的PID是相同的,是吗?fork()创建一个子进程,其PID不同,但其他所有事物都相同。Vfork()创建一个具有相同PID的子进程。Exec致力于将当前正在执行的流程更改为其他流程。
我在所有这些陈述中都正确吗?
不完全的。如果通过fork / exec或vfork / exec克隆进程,则将获得新的进程ID。fork()将为您提供具有新进程ID的新进程,并exec()用新进程替换该进程,但仍保留该进程ID。
fork()
exec()
从这里:
vfork()函数与fork()的不同之处仅在于子进程可以与调用进程(父进程)共享代码和数据。如果滥用vfork(),这将极大地加快克隆活动的速度,并有可能损害父进程的完整性。