vfork

Libvirt 允许 hook to fork
vfork

Libvirt 允许 hook to fork

如果我有以下 Libvirt 钩子/etc/libvirt/hooks/qemu.d/hook.sh #!/usr/bin/env bash if [[ $1 == "SEARCH_FOR_ME" ]]; then while true; do sleep 1 done fi bash /etc/libvirt/hooks/qemu.d/hook.sh SEARCH_FOR_ME & disown $! touch /tmp/test123 exit 0 现在,当我启动任何虚拟机时,这个钩子就会被调用,我期望...

Admin

为什么要在子进程创建后立即调用 exec() 或 exit() 时使用 vfork() ?
vfork

为什么要在子进程创建后立即调用 exec() 或 exit() 时使用 vfork() ?

操作系统概念和APUE说 使用vfork(),父进程被挂起,子进程使用父进程的地址空间。由于 vfork() 不使用写时复制,因此如果子进程更改了父进程地址空间的任何页面,则一旦父进​​程恢复,更改的页面将对父进程可见。所以,vfork() 必须谨慎使用,以确保子进程不会修改父进程的地址空间。 vfork() 旨在当子进程创建后立即调用 exec() 或 exit() 时使用。 最后一句我该如何理解? vfork()当通过调用创建的子进程时exec(),不会exec()通过加载新程序来修改父进程的地址空间吗? vfork()当调...

Admin

在 vfork() 系统调用中不复制页表条目有什么好处?
vfork

在 vfork() 系统调用中不复制页表条目有什么好处?

vfork() 系统调用与 fork() 具有相同的效果,只不过不复制父进程的页表条目。如今,有了 copy-on-write 和 child-runs-first 语义,vfork 唯一的好处() 并不复制页表条目。如果有一天 Linux 获得了写时复制页表条目,将不再有任何好处。 这些是 Robert Love 的《Linux 内核开发》一书中的一些内容。我不明白的是,不复制页表条目有什么好处? 还有一行字说:”在copy_process()中,task_struct成员vfork_done被设置为NULL”。 这是什么vfork_done?它的作...

Admin

pthreads 和 vfork
vfork

pthreads 和 vfork

我试图检查当其中一个线程执行 vfork 时,pthreads 到底发生了什么。规范规定,父“控制线程”将“挂起”,直到子进程调用 exec* 或 _exit。据我了解,共识是这意味着整个父进程(即:及其所有 pthreads)被挂起。我想通过实验来确认这一点。到目前为止,我进行了几次实验,所有这些都表明其他 pthread 正在运行。由于我没有 Linux 经验,我怀疑我对这些实验的解释是错误的,了解这些结果的真正解释可以帮助我避免生活中进一步的误解。这是我所做的实验: 实验一 #include<unistd.h> #include<...

Admin

执行“vfork without exec”的进程如何最终陷入长时间的不间断睡眠?
vfork

执行“vfork without exec”的进程如何最终陷入长时间的不间断睡眠?

在这个答案用户建议 通常,不间断睡眠不会持续很长时间,但在 Windows 下,损坏的驱动程序或损坏的用户空间程序(没有 exec 的 vfork)最终可能会永远在 D 中休眠。 用户空间程序如何真正锁定在无错误内核的 D​​ 中?我认为用户模式能够故意卡在 D 中是一个小漏洞...... ...

Admin