首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >fork()的用途是什么?

fork()的用途是什么?
EN

Stack Overflow用户
提问于 2009-06-12 12:49:06
回答 13查看 65K关注 0票数 98

在Linux的许多程序和手册页中,我都看到过使用fork()的代码。为什么我们需要使用fork()?它的用途是什么?

EN

回答 13

Stack Overflow用户

发布于 2009-06-12 04:53:48

fork()是Unix创建新进程的方式。在调用fork()时,您的进程被克隆,两个不同的进程从那里继续执行。其中之一,即孩子,将使fork()返回0。另一个是父进程,它让fork()返回子进程的PID (进程ID)。

例如,如果您在shell中键入以下内容,shell程序将调用fork(),然后执行您在子进程中传递的命令(在本例中为telnetd),而父进程将再次显示提示,以及一条指示后台进程的PID的消息。

代码语言:javascript
复制
$ telnetd &

至于创建新进程的原因,这就是你的操作系统可以同时做很多事情的原因。这就是为什么你可以运行一个程序,当它运行时,切换到另一个窗口并做其他事情。

票数 19
EN

Stack Overflow用户

发布于 2009-06-12 04:55:39

fork()用于创建子进程。当调用fork()函数时,将产生一个新进程,并且fork()函数调用将为子进程和父进程返回不同的值。

如果返回值为0,您就知道自己是子进程,如果返回值是一个数字(恰好是子进程id),您就知道自己是父进程。(如果它是负数,则fork失败,并且没有创建子进程)

http://www.yolinux.com/TUTORIALS/ForkExecProcesses.html

票数 10
EN

Stack Overflow用户

发布于 2009-06-12 05:02:32

fork()主要用于为调用此函数的进程创建子进程。无论何时调用fork(),它都会为子id返回一个零。

代码语言:javascript
复制
pid=fork()
if pid==0
//this is the child process
else if pid!=0
//this is the parent process

这样,您就可以为父对象和子对象提供不同的操作,并利用多线程特性。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/985051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档