在什么情况下会用到linux系统中fork()函数,请举例说明。
学习linux系统编程,遇到fork()函数,对该函数工作原理一般讲解的都很详细。但有个疑问,在什么情况下会用到fork()函数?在什么情况下需要用fork()函数去生成一个与自己一样的子进程?有些例子对fork的返回值做判断并作出相应的处理,但还是不明白,fork返回子进程PID时意味着什么,返回父进程PID时意味着什么?请举个需要用到fork函数的例子。
分较少,但全部奉上。5分。
是不是可以这么理解,每启动一个进程,都要执行fork函数,去生成该进程的子进程,这是由linux系统进程管理机制决定的?
是不是说每调用一次fork函数,就相当于招募了一个新工人,没调用fork函数的进程,相当于只有一个人在干活。
是招人干活还是自己干的依据是什么?程序员根据什么判断需不需要调用fork函数?
是的.fork一次就相当与招募了一个新工人.但是招募的工人要做什么,和什么时候需要招募新工人都是由程序员自己判断的.
最见的linux的多进程应用场景就是网络服务了.比如http服务.这个服务能同时对上千个人进行服务.就是使用多进程(实际上是用线程池的方式,不过为了理解简单可以理解为多进程).http多进程是,一个人连接上来http为他打开一个进程提供服务(就是提供web页面).这个人一直未关闭web页面并且一直在页面进行新的请求.这个时候如果有另外一个人请求服务的话怎么办呢?如果是单进程的话.那就只能等上一个人结束页面操作.进程才能为这个人服务.但是如果是多进程的话.就不需要等另一个人是否完成操作了.直接新fork一个进程为新来的这个人提供同样的服务.