The UNIX and Linux Forums  

Go Back   The UNIX and Linux Forums > Top Forums > High Level Programming
Google UNIX.COM


High Level Programming Post questions about C, C++, Java, SQL, and other programming languages here.

More UNIX and Linux Forum Topics You Might Find Helpful
Thread Thread Starter Forum Replies Last Post
Multi-threading-- calling same function through different threads arunchaudhary19 High Level Programming 1 12-10-2007 08:54 AM
Multi threading? enuenu High Level Programming 4 05-29-2007 02:17 AM
Regarding Multi-Threading matrixmadhan High Level Programming 5 07-20-2005 02:54 AM
Multi-threading questions DreamWarrior High Level Programming 1 11-02-2003 08:34 PM
Multi threading using posix thread library shushilmore High Level Programming 2 09-09-2002 04:12 AM

Reply
 
Submit Tools LinkBack Thread Tools Display Modes
  #1  
Old 11-26-2003
Registered User
 

Join Date: Nov 2003
Posts: 5
Question Multi threading using fork

Hi,
I have written a code which will run a set of process using
fork.
I want to know from You how can i start another job when one of my job in my loop is completed

My code is
Code:
#include<stdio.h>
#include<ctype.h>


main() {
int pid,cid;
ChildProcess();
          pid=getpid();
         printf("pid  : %d\n",pid);

          printf(" FORK DEMO ");
     if(!fork()) {
     cid=getpid();
            printf(" cid  : %d ",cid);
     printf("i m the child process");
     ChildProcess();
     exit(0);
   }

  printf("waiting for child");
   wait(NULL);
  printf(" child finished ");
}
ChildProcess() {
       int i;
       for(i=0;i<10;i++) {
          system("sh runcpty.sh"); //here i wrote code to run  pgms
          printf(" %d ",i);
          sleep(0);
      }
    }
This program will run only start processing 10 programs, But
i want to start another program automatically when one of process out of ten is completed (i.e Multi Tasking)
Can U please solve this problem

I added code tags for readability -- Perderabo

Last edited by Perderabo; 11-27-2003 at 03:00 PM.
Reply With Quote
Forum Sponsor
  #2  
Old 11-27-2003
Perderabo's Avatar
Unix Daemon
 

Join Date: Aug 2001
Location: Washington DC Area
Posts: 8,616
Well, you're not off to very good start here.

The text of your post says your program "will run a set of process using fork." But even the comments in your code disagrees with that. When you run system() in a loop as you are doing, you will run one program after another. After the tenth program finishes, the ChildProcess function will return. Then your program finally performs it's first and only fork() which is a demo. And then it exits.

To get the ball rolling, you need to call fork() 10 times in a loop. And each child process will need run one of your jobs. One of the exec() calls would be much better than system().

I think that you should get this much working first.

But basicly you will need to install a signal handler that catches SIGCHLD to detect the death of a child.
Reply With Quote
Google The UNIX and Linux Forums
Reply

Thread Tools
Display Modes




All times are GMT -7. The time now is 02:45 AM.


Powered by: vBulletin, Copyright ©2000 - 2006, Jelsoft Enterprises Limited.
The UNIX and Linux Forums Content Copyright ©1993-2008. All Rights Reserved.Ad Management by RedTyger Visit The Complex Event Processing Blog

Content Relevant URLs by vBSEO 3.2.0