当前位置: 技术问答>linux和unix
fork()到底起什么作用
来源: 互联网 发布时间:2015-08-17
本文导语: pid = fork(); if (pid > 0) { /* parent process */ printf ( "main() %s %s is now runing in background.n", _Product, _Version); return 0 ; } 如上程序,我开辟一个...
pid = fork();
if (pid > 0) { /* parent process */
printf ( "main() %s %s is now runing in background.n", _Product, _Version);
return 0 ;
}
如上程序,我开辟一个子进程是为了什么?
子进程拷贝父进程,两者独立运行还是相互通讯?
子进程是父进程的拷贝,那子进程起到什么具体作用?
再下新手,在线请教中,谢谢!
if (pid > 0) { /* parent process */
printf ( "main() %s %s is now runing in background.n", _Product, _Version);
return 0 ;
}
如上程序,我开辟一个子进程是为了什么?
子进程拷贝父进程,两者独立运行还是相互通讯?
子进程是父进程的拷贝,那子进程起到什么具体作用?
再下新手,在线请教中,谢谢!
|
你不能根据某个技术来问他的目的是什么
而应该了解自己的目的是什么,然后用什么技术手段可以实现
别人无法知道你创建个子进程为什么?不同的程序创建之进程有不同的目的
技术是为了达到某个目的而存在的,fork()存在的目的就是为了生成子进程,子进程就可以做其它跟父进程没关的事情,或者相互依靠共同完成一件事情
父子进程是相互独立的,但通过一些进程通讯方法可以协作运行
子进程的具体作用就是:完成另一件事情
而应该了解自己的目的是什么,然后用什么技术手段可以实现
别人无法知道你创建个子进程为什么?不同的程序创建之进程有不同的目的
技术是为了达到某个目的而存在的,fork()存在的目的就是为了生成子进程,子进程就可以做其它跟父进程没关的事情,或者相互依靠共同完成一件事情
父子进程是相互独立的,但通过一些进程通讯方法可以协作运行
子进程的具体作用就是:完成另一件事情
|
1、单就这一小段代码,从父进程首先调用fork,然后再exit,加上
printf ( "main() %s %s is now runing in background.n", _Product, _Version);
这句看来,是创建一个精灵进程的典型用法
2、子进程是父进程的复制品,但彼此都有独立的内存空间,需要通讯的话要同过IPC(InterProcess Communication)实现,包括管道、消息队列、信号量、共享存储、套接口等等
3、单就你这一小段代码根本看不出你的子进程做了什么
建议楼主先好好看看书
printf ( "main() %s %s is now runing in background.n", _Product, _Version);
这句看来,是创建一个精灵进程的典型用法
2、子进程是父进程的复制品,但彼此都有独立的内存空间,需要通讯的话要同过IPC(InterProcess Communication)实现,包括管道、消息队列、信号量、共享存储、套接口等等
3、单就你这一小段代码根本看不出你的子进程做了什么
建议楼主先好好看看书
|
举个简单明了的例子吧。
以下是socket通讯,服务器的一小部分伪代码:
int pid;
while (1) {
侦听端口;
建立连接;
if ((pid = fork()) == 0) {
生成一个子进程。
业务处理;
关闭连接;
退出子进程;
}
....
}
以下是socket通讯,服务器的一小部分伪代码:
int pid;
while (1) {
侦听端口;
建立连接;
if ((pid = fork()) == 0) {
生成一个子进程。
业务处理;
关闭连接;
退出子进程;
}
....
}