08-08-2002
fork() makes a copy of a process. If you do that in a "for" loop, you have a problem. The first time through the loop you invoke fork() and now you have two processes. Unless you have code to prevent it, both processes with continue to run that loop. On the second iteration you get 4 processes, then 8, then 16, then 32.... Anr 32 processes all forking themselves will put a nasty load on the system.
10 More Discussions You Might Find Interesting
1. UNIX for Dummies Questions & Answers
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 (5 Replies)
Discussion started by: Deepali
5 Replies
2. Shell Programming and Scripting
I need a quick script that will serve as a sort of "real time monitor" for watching some log files. I am using Bourne shell in HP-UX 10.20. I have basically created a script that never ends, unless of course I manually terminate it. Here's the script (it's called qhistory):
clear
echo "REAL... (3 Replies)
Discussion started by: cdunavent
3 Replies
3. 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
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. Shell Programming and Scripting
I am trying to ping through a list of devices in parallel.
When the code below is executed, I enter a infinite loop.
I want to used the number of lines in the file as my boundry.
I am a perl rookie and just cant see whats wrong.
would appreciate help ...
use Net::Ping;
#
$filename... (0 Replies)
Discussion started by: popeye
0 Replies
7. Programming
I need to write a program which creates some n number of processes first and also creates a fifo for each of them, then it connects to the server and..
I tried creating these processes with fork() in a for loop but it doesn't print out what i write inside the child..
for(int count = 0; count... (7 Replies)
Discussion started by: saman_glorious
7 Replies
8. Programming
Hello people.
I'm trying to do something like a search engine.
Server runs in the background by using ./server & which has data from a textfile stored in an array.
Client then runs by using ./client
It will then prompt "Search for:"
For example, if I searched for Products called Instant... (0 Replies)
Discussion started by: andylbh
0 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
fork(2) System Calls Manual fork(2)
Name
fork - create a new process
Syntax
#include <sys/types.h>
#include <unistd.h>
pid = fork()
pid_t pid;
Description
The system call causes creation of a new process. The new process (child process) is an exact copy of the calling process except for the
following:
o The child process has a unique process ID.
o The child process has a different parent process ID (that is, the process ID of the parent process).
o The child process has its own copy of the parent's descriptors. These descriptors reference the same underlying objects, so that, for
instance, file pointers in file objects are shared between the child and the parent, so that a on a descriptor in the child process
can affect a subsequent read or write by the parent. This descriptor copying is also used by the shell to establish standard input
and output for newly created processes as well as to set up pipes.
o The child processes resource utilizations are set to 0. For further information, see
Return Values
Upon successful completion, returns a value of 0 to the child process and returns the process ID of the child process to the parent
process. Otherwise, a value of -1 is returned to the parent process, no child process is created, and the global variable errno is set to
indicate the error.
Diagnostics
The system call fails and no child process are created under the following conditions:
[EAGAIN] The system-imposed limit {PROC_MAX} on the total number of processes under execution would be exceeded.
[EAGAIN] The system-imposed limit {CHILD_MAX} on the total number of processes under execution by a single user would be exceeded.
[ENOMEM] There is insufficient swap space for the new process.
See Also
execve(2), wait(2)
fork(2)