![]() |
|
|
|
|
|||||||
| Forums | Portal | Register | Forum Rules | FAQ | Contribute | Members List | Arcade | Search | Today's Posts | Mark Forums Read |
| High Level Programming Post questions about C, C++, Java, SQL, and other programming languages here. |
|
|
||||
| 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 |
|
|
Submit Tools | LinkBack | Thread Tools | Display Modes |
|
#1
|
|||
|
|||
|
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);
}
}
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. |
| Forum Sponsor | ||
|
|
|
#2
|
||||
|
||||
|
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. |
||||
| Google The UNIX and Linux Forums |