Fork ()


Login or Register for Dates, Times and to Reply

 
Thread Tools Search this Thread
# 1  
CPU & Memory 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
# 2  
Quote:
... and the way fork () return the value .
fork() is a bit special, you call it once but return twice Smilie
That is it returns once in the child with return code of 0, and return once in parent with retcode of the child pid, if all went right and if my memories didnt fail agen
# 3  
Quote:
Originally Posted by iwbasts
hi all
About this code

for (i = 1; i < n; i++)
if ((childpid = fork()) <= 0)
break;
I think there will be n process at the end. If u skip break statement then u will get 2^n process ( 2 to the power of n).

Regards,
# 4  
Quote:
Originally Posted by parasa
I think there will be n process at the end. If u skip break statement then u will get 2^n process ( 2 to the power of n).

Regards,

If it all if there is any anything to be done by the child

there would be only 2^(n-1)-2 child processes
and 1 parent process
as for validates between and 1 and < n
# 5  
People try to be a little too clever with fork sometimes... whenever I use it I try to write my code like this:

Code:
pid_t pid=fork();
if(pid > 0)
{
  int status;
  /* This process has created an independent child process */

  do_other_stuff();

  /* Wait for it to finish so it doesn't become a zombie */
  wait(&status);
}
if(pid == 0)
{
  /* This process IS the child process! */
  do_stuff();

  /* Exit the program when we're done doing stuff */
  exit(0);
}
else
{
  /* No child process was created because of some sort of error */
}

# 6  
Quote:
Originally Posted by Corona688
People try to be a little too clever with fork sometimes... whenever I use it I try to write my code like this:

Code:
pid_t pid=fork();
if(pid > 0)
{
  int status;
  /* This process has created an independent child process */

  do_other_stuff();

  /* Wait for it to finish so it doesn't become a zombie */
  wait(&status);
}
if(pid == 0)
{
  /* This process IS the child process! */
  do_stuff();

  /* Exit the program when we're done doing stuff */
  exit(0);
}
else
{
  /* No child process was created because of some sort of error */
}

this could be a better way,

pid_t pid;
if( (pid=fork()) < 0 )
{
/* Error Stuff */
}
else if(pid == 0 )
{
/* child stuff */
}
else
{
/* parent stuff */
}


the above will not mandate two if-condition checks
Login or Register for Dates, Times and to Reply

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

Test Your Knowledge in Computers #189
Difficulty: Easy
The boolean data type in Python is immutable.
True or False?

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 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

8. 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

9. 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

10. UNIX for Dummies Questions & Answers

Fork

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

Featured Tech Videos