1.一个进程通过fork()创建一个子进程,父子进程都想标准输出写操作,如果父进程的标准输出已重定向(如 ./pid >test.txt),那么子进程写到该标准输出时,它将更新域父进程共享的该文件的偏移量。 ---- 不是很明白 详见《嵌入式linux系统开发技术详见》P355-356
2.fork()的父子进程运行顺序不定,而vfork()保证子进程先运行,在它调用exec()或者exit()后父进程才可能调度运行。
3.fork()将父进程的地址空间完全复制到子进程中, 而vfork()出来的子进程是在父进程的空间中运行,如果此时子进程修改了某个变量,也会影响到父进程。即进程在vfork()返回后,直接运行在父进程的栈空间,并使用父进程的内存和数据。
fork与vfork的区别
本文探讨了fork()和vfork()系统调用的区别,包括进程创建后的标准输出行为、运行顺序的不同以及对地址空间的影响。重点讲解了vfork()如何在父进程空间中运行子进程,以及这带来的变量共享特性。
766

被折叠的 条评论
为什么被折叠?



