03-20-2001
"To Fork" is like "a fork in your path" when you are walking in the forest. The concept is similar in UNIX processes, however the fork occurs with the logic flow of the program and processes.
Consider that your process is running as process ID 100. The process has an open file descriptor listening for incoming TCP/IP connections. When an incoming connection occurs, the process could "fork" another process to handle the incoming connection. The process ID, for example, of the new process that was "forked" could be 132 (whatever the next available process ID was).
When a new process is forked it has a few interesting options. One is to take the content of the global variables and other data structures and make a copies in the new fork. Another option is to fork and completely replace the original process.
So, forking is just something that occurs to a process in its "path of execution". The main difference between forking processes and your fork as your walk down the road is that you can't physically walk down two paths. Software processes can and do spawn many processes by forking.
Hope this helps.
[Edited by Neo on 03-20-2001 at 06:27 PM]
This User Gave Thanks to Neo For This Post:
10 More Discussions You Might Find Interesting
1. Programming
I run this code, actually I want to both processes print the message from "data". But only one does. What happens? Anyone can help?
#include <stdio.h>
main(){
int fd, pid;
char x;
fd = open("data",0); /* open file "data" */
pid = fork();
if(pid != 0){
wait(0);
... (2 Replies)
Discussion started by: Herman
2 Replies
2. Programming
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#define MAX_COUNT 200
#define BUF_SIZE 100
void main(void)
{
pid_t pid;
int i;
char buf;
fork();
pid = getpid();
for (i = 1; i <= MAX_COUNT; i++) {
sprintf(buf,... (2 Replies)
Discussion started by: MKSRaja
2 Replies
3. Programming
Hello all.
I'm developing a filetransfer application, which is supposed to work sort of like dcc, with multiple transfers etc. Now i wonder what the best way to manage the transfers is. Should i fork() for each new transfer, hogging loads of memory or use pthreads? Maybe I can use select to see... (0 Replies)
Discussion started by: crippe
0 Replies
4. Programming
hi all
About this code
for (i = 1; i < n; i++)
if ((childpid = fork()) <= 0)
break;
I really can't understand the output .
and the way fork () return the value .
how about the process Id ,the child process Id and the parent ID
in this case
so please answer me soon (5 Replies)
Discussion started by: iwbasts
5 Replies
5. Programming
Hi everybody,
I wanna write a code to understand how fork works.
my target
--------------
-Parent creates a file(called temp) and writes into this file "1".Then it closes the file.
-Then parent creates a child and wait until execution of this child ends.
-Then child opens the same... (3 Replies)
Discussion started by: alexicopax
3 Replies
6. UNIX for Advanced & Expert Users
Hi,
I wrote a simple program for understanding the fork command. The code is as below
int main(void)
{
fork(); printf("hi 1 \n");
fork(); printf("hi 2 \n");
fork(); printf("hi 3 \n");
}
I am getting a variation in the number of times the printf is called if i remove the \n from each of... (1 Reply)
Discussion started by: xyz123456
1 Replies
7. Programming
Hi,
I wrote a simple program for understanding the fork command. The code is as below
int main(void)
{
fork(); printf("hi 1 \n");
fork(); printf("hi 2 \n");
fork(); printf("hi 3 \n");
}
I am getting a variation in the number of times the printf is called if i remove the \n from each... (2 Replies)
Discussion started by: xyz123456
2 Replies
8. Programming
does fork() spawn only the parent process, what if fork() is looped, does it spawn the parent and the child? (4 Replies)
Discussion started by: Peevish
4 Replies
9. UNIX for Dummies Questions & Answers
I'm trying to run a simple test on how to use fork(), i'm able to execute the child process first then the parent, but how can I execute parent then child..?
Thanks! (1 Reply)
Discussion started by: l flipboi l
1 Replies
10. Programming
I understand that fork create a child but I need very simple example that make child useful....
I mean how will make the program faster anyone explain with code plz
using C plz (2 Replies)
Discussion started by: fwrlfo
2 Replies
LEARN ABOUT MOJAVE
net::server::fork
Net::Server::Fork(3) User Contributed Perl Documentation Net::Server::Fork(3)
NAME
Net::Server::Fork - Net::Server personality
SYNOPSIS
use base qw(Net::Server::Fork);
sub process_request {
#...code...
}
__PACKAGE__->run();
DESCRIPTION
Please read the pod on Net::Server first. This module is a personality, or extension, or sub class, of the Net::Server module.
This personality binds to one or more ports and then waits for a client connection. When a connection is received, the server forks a
child. The child handles the request and then closes.
With the exception of parent/child signaling, this module will work (with basic functionality) on Win32 systems.
ARGUMENTS
check_for_dead
Number of seconds to wait before looking for dead children. This only takes place if the maximum number of child processes
(max_servers) has been reached. Default is 60 seconds.
max_servers
The maximum number of children to fork. The server will not accept connections until there are free children. Default is 256 children.
max_dequeue
The maximum number of dequeue processes to start. If a value of zero or undef is given, no dequeue processes will be started. The
number of running dequeue processes will be checked by the check_for_dead variable.
check_for_dequeue
Seconds to wait before forking off a dequeue process. It is intended to use the dequeue process to take care of items such as mail
queues. If a value of undef is given, no dequeue processes will be started.
CONFIGURATION FILE
See Net::Server.
PROCESS FLOW
Process flow follows Net::Server until the post_accept phase. At this point a child is forked. The parent is immediately able to wait for
another request. The child handles the request and then exits.
HOOKS
The Fork server has the following hooks in addition to the hooks provided by the Net::Server base class. See Net::Server
"$self->pre_accept_hook()"
This hook occurs just before the accept is called.
"$self->post_accept_hook()"
This hook occurs in the child after the accept and fork.
"$self->run_dequeue()"
This hook only gets called in conjunction with the check_for_dequeue setting.
HOT DEPLOY
Since version 2.000, the Fork server has accepted the TTIN and TTOU signals. When a TTIN is received, the max_servers is increased by 1.
If a TTOU signal is received the max_servers is decreased by 1. This allows for adjusting the number of handling processes without having
to restart the server.
AUTHOR
Paul Seamons <paul@seamons.com>
Rob Brown <bbb@cpan.org>
SEE ALSO
Please see also Net::Server::INET, Net::Server::PreFork, Net::Server::MultiType, Net::Server::SIG Net::Server::Single
perl v5.18.2 2013-01-09 Net::Server::Fork(3)