当前位置: 技术问答>linux和unix
关于linux中的 fork() 函数
来源: 互联网 发布时间:2017-05-15
本文导语: 创建新进程函数fork(void)函数,会在已经存在的进程中创建一个新进程。父/子进程会运行同一个程序。 Q1:既然运行同一个程序,为何需要在父进程中再创建一个进程?直接运行该程序不是更简洁? Q2:函数fork()创...
创建新进程函数fork(void)函数,会在已经存在的进程中创建一个新进程。父/子进程会运行同一个程序。
Q1:既然运行同一个程序,为何需要在父进程中再创建一个进程?直接运行该程序不是更简洁?
Q2:函数fork()创建新进程,返回了两个值。问在linux内核(版本linux-2.6.32.61)内如何查这个函数的源代码?只发现了C文件fork.c但是没有发现fork()函数。
试问 在linux操作系统内 或者是 linux内核内要怎样查找函数的源代码?都说linux是开源应该是可以找到的。我曾经用man查看但是显示的结果是怎么用这个函数而不是函数源代码。
谢谢
Q1:既然运行同一个程序,为何需要在父进程中再创建一个进程?直接运行该程序不是更简洁?
Q2:函数fork()创建新进程,返回了两个值。问在linux内核(版本linux-2.6.32.61)内如何查这个函数的源代码?只发现了C文件fork.c但是没有发现fork()函数。
试问 在linux操作系统内 或者是 linux内核内要怎样查找函数的源代码?都说linux是开源应该是可以找到的。我曾经用man查看但是显示的结果是怎么用这个函数而不是函数源代码。
谢谢
|
A1:a,比如服务器,每当一个用户访问某个资源的时候,负责管理的进程就要给用户创建一个进程来为你服务!还比如并行运算,住进程创建多个子进程利用smp并行运行,等等用处多了去喽!最关键的一定:系统启动的时候是个孙悟空出世,它是从无到有的进程0号进程,以后整个系统的所有的进程都是它的子进程!整个系统就是一棵进程树,你以为没事瞎折腾啊!!!b:你理解错了,在父进程创建子进程时候,子进程共享父进程的大部分资源,注意是共享,也是说没有拷贝,(只是一个指针指向)子进程只需要创建自己特有的栈和其他一些必须的资源之外,其余的就是共享父进程的资源,这是COW机制,详细内容自己google这个机制。
A2:在线代码查看http://lxr.oss.org.cn/source/?v=3.10
linux kernel源码官网:https://www.kernel.org/
Linux 欢迎你!
A2:在线代码查看http://lxr.oss.org.cn/source/?v=3.10
linux kernel源码官网:https://www.kernel.org/
Linux 欢迎你!
|
先安装源代码,再用find命令查找。用grep命令可以在文件内部查找。举例:
find /dir/***/dir -name "*frok.c"
grep 'fork' `find /dir/***/dir -name *.c`
grep 'fork' `find /dir/***/dir -name *.h`查看在哪里声明。
find /dir/***/dir -name "*frok.c"
grep 'fork' `find /dir/***/dir -name *.c`
grep 'fork' `find /dir/***/dir -name *.h`查看在哪里声明。