在linux嵌入式系统中,我可以看到在 ps
同一二进制的2个进程(pid1=X, pid2=Y),这些进程没有线程(/proc/X/task
和 /proc/Y/task
不存在)
当我看着 /proc/Y/status
我可以看到父节点的pid(PPID)是X。
我在Ida的二进制文件上看了一下,那个动态二进制,并没有看到 fork
函数的导入表。
当我用PTRACE改变pid X或pid Y的一些指令时,会影响到另一个pid,所以它们似乎共享同一个代码区。
如果Y是X的线程,我应该看到它在 /proc/X/task
而不在 ps
不显示线程标志。
哪个函数可以复制共享相同代码区的进程,但属于 fork
?
哪个函数可以复制共享同一代码区的进程?
据我所知,我可以列出系统调用。
fork
vfork
- fork
有一些限制和更快clone
- fork
但linux特有的微调一切。clone3
- 新版 clone()
clone2
- clone
只有在IA-64上才可使用的IA-64专用设备。