在Linux的许多程序和手册页中,我都看到过使用fork()
的代码。为什么我们需要使用fork()
?它的用途是什么?
发布于 2009-06-12 04:53:48
fork()是Unix创建新进程的方式。在调用fork()时,您的进程被克隆,两个不同的进程从那里继续执行。其中之一,即孩子,将使fork()返回0。另一个是父进程,它让fork()返回子进程的PID (进程ID)。
例如,如果您在shell中键入以下内容,shell程序将调用fork(),然后执行您在子进程中传递的命令(在本例中为telnetd),而父进程将再次显示提示,以及一条指示后台进程的PID的消息。
$ telnetd &
至于创建新进程的原因,这就是你的操作系统可以同时做很多事情的原因。这就是为什么你可以运行一个程序,当它运行时,切换到另一个窗口并做其他事情。
发布于 2009-06-12 04:55:39
fork()用于创建子进程。当调用fork()函数时,将产生一个新进程,并且fork()函数调用将为子进程和父进程返回不同的值。
如果返回值为0,您就知道自己是子进程,如果返回值是一个数字(恰好是子进程id),您就知道自己是父进程。(如果它是负数,则fork失败,并且没有创建子进程)
发布于 2009-06-12 05:02:32
fork()主要用于为调用此函数的进程创建子进程。无论何时调用fork(),它都会为子id返回一个零。
pid=fork()
if pid==0
//this is the child process
else if pid!=0
//this is the parent process
这样,您就可以为父对象和子对象提供不同的操作,并利用多线程特性。
https://stackoverflow.com/questions/985051
复制相似问题