Fork


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Fork
# 1  
Old 03-20-2001
What is a fork? Why would one create a fork? What are the advantages and disadvantages of using a fork?

Please advise.

Thank You.

Deepali
# 2  
Old 03-20-2001
Advantages of using a fork? You dont get spaghetti sauce on your hands....

Please read the <A HREF="http://www.rahul.net/cgi-bin/userbin/man?topic=fork&section=2">fork(2)</A> man page. It should answer most of your questions.
# 3  
Old 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:
# 4  
Old 08-21-2001
Question Fork

Hi,
I'm new to programming under unix too, and I'm trying to implement a load balancing system for web traffic.

The idea is this,
I have a single web server running on PC A, and I have 5 other PCs (PC B - PC F) running only mysql servers. Assuming all the databases contain synchronized data, I would like to implement a database search facility where the web server receives the input, split the input keywords into single keywords and using fork() in the cgi-script, spawn multiple child processes to issue seperate queries to each of the database servers via different connection strings to receive the result.

Will this result in a much faster response time than just running a single database server and searching all the keywords serially ?
Is there a better way to do it besides forking ? What are the drawbacks of forking and implementing it this way ?

Sample code would very much be appreciated.
Thanks,
Wee
# 5  
Old 08-23-2001
Threading

I thibk you should do some reading on how write threaded programs.
# 6  
Old 08-26-2001
forking

Wee,

Yes you could use fork() BUT...
I would also recommend using threads to
accomplish what you are proposing. If you were
to use fork(), you would have as many separate
programs running as you have keywords per query.
Then, you would have to synchronize the results
of each into a single result. Threads will allow
you to run each keyword query against separate
databases but still allow you to synchronize
the results from within the same program. I
would recommend reading...

"Programming with POSIX Threads"
ISBN 0-201-63392-2

"Pthreads Programming"
ISBN 1-56592-115-1
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Programming

Fork!

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

2. UNIX for Dummies Questions & Answers

fork()

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

3. Programming

Fork()

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

4. Programming

Fork and \n

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

5. UNIX for Advanced & Expert Users

Fork and \n

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

6. Programming

fork() help

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

7. Programming

Fork ()

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

8. Programming

Fork or what?

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

9. Programming

fork()

#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

10. Programming

fork() fd

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
Login or Register to Ask a Question