Howto spawn multiple child processes and wait?


 
Thread Tools Search this Thread
Top Forums Programming Howto spawn multiple child processes and wait?
# 1  
Old 10-16-2005
Howto spawn multiple child processes and wait?

As far as I can tell, the bash wait command waits for a logical "AND" of all the child processes.

Assuming I am coding in C:

(1) What is the function I would use to create multiple bash child process running perl?

(2) What is the function I would use to reinvent the bash wait command so I could wait for a logical "OR" so my parent wakes up when the first child process dies?

Thanks,
Siegfried
# 2  
Old 10-17-2005
From the man page of wait(2) - HP-UX,
Quote:
Originally Posted by HP-UX man wait(2)
The wait() function will suspend execution of the calling process until status information for one of its terminated child processes is available, or until delivery of a signal whose action is either to execute a signal-catching function or to terminate the process. If status information is available prior to the call to wait(), return will be immediate.
The wait syscall will return for each of the children seperately, so you will have to issue the call as many times as there are children. Alternately, you could look into signal handling as the parent process receives a SIGCHLD when one of the children terminate.
# 3  
Old 10-17-2005
How to call wait?

but with a name like "wait", I assume the calling will be blocked until child dies. Correct?

It sounds like what you are describing is a serial approach and I want a parallel approach where all the children are executing in parallel.

Or perhaps I misunderstand...

Thanks,
Siegfried
# 4  
Old 10-17-2005
How to block with signal handling?

How would I block with signal handling? Would I have to poll and then sleep and then poll?

What is the name of the function to call so I can block until receiving a signal?

Thanks,
Siegfried
# 5  
Old 10-17-2005
Quote:
Originally Posted by siegfried
but with a name like "wait", I assume the calling will be blocked until child dies. Correct?
It sounds like what you are describing is a serial approach and I want a parallel approach where all the children are executing in parallel.
Or perhaps I misunderstand...
Your code can have all the children executing in parallel. Write it such that the main parent process will fork children till there are no more left to fork, and then start wait()ing. The execution of the children will be parellel in this case, but the parent process will issue the waits in a serial manner.

Quote:
Originally Posted by siegfried
How would I block with signal handling? Would I have to poll and then sleep and then poll?
What is the name of the function to call so I can block until receiving a signal?
Check the man pages for sigaction and signal.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Wait till any one child process finishes

Hi I am facing a problem in my ksh. My main script is calling 3 different child process in the background. I am using wait to finish all and then submit another 3 child processes. Now what i want is , whenever any one child process finishes ,i want to submit next one.so that parallel 3... (2 Replies)
Discussion started by: Sangu
2 Replies

2. Shell Programming and Scripting

How make parent to wait from child process?

Hi all, I am starting mgen5 for sometime depends on input from a file, in a child process. now I want to make parent to wait in this child process till mgen5 finishes, or timeout happens. could anyone please tell me how to make parent to wait in child process in shell script? thanks... (2 Replies)
Discussion started by: girijajoshi
2 Replies

3. UNIX for Dummies Questions & Answers

How to wait for a grand child to finish?

Hello all, I have a very basic question. I have a requirement where in, I have a main process which forks a child process, which execs and runs a c executable corresponding to a daemon. In the c executable corresponding to a daemon, as everyone does, I fork another child process, and as part of... (7 Replies)
Discussion started by: sai2krishna
7 Replies

4. Shell Programming and Scripting

Wait for one processes to complete in a shell script

Let's say I start process A.sh, then start process B.sh. I call both of them in my C.sh How can I make sure that B starts its execution only after A.sh finishes. I have to do this in loop.Execution time of A.sh may vary everytime. It is a parameterized script. (17 Replies)
Discussion started by: rafa_fed2
17 Replies

5. Shell Programming and Scripting

SPAWN Multiple Processes in Unix

Hi, I have three files in my IN directory.Each file should be copied 25 times using for loop.Each file processing should run in parallel?How to spawn multiple processes in unix?Any help would be appreciated. Thanks, Liyakath (7 Replies)
Discussion started by: liyakathali
7 Replies

6. Programming

Parent,child wait,signal

Hello. I want to make a child do some stuff,wait,then the parent does some stuff and then child does some stuff and waits again.I have made the following but it does not work.Can anybody help me? pid1 = fork(); if (pid1 == -1) { perror("Can't create child\n"); ... (18 Replies)
Discussion started by: Cuervo
18 Replies

7. Shell Programming and Scripting

Make cron wait for the child process

I am trying to find a list of files and writing it to a text file. Based on the machine performance the file writing will be slow at certain time. The code to find file and redirecting the output to text file is on a shell script /usr/bin/find $SEARCH_DIR -daystart \( \( -name 'KI*' -a... (4 Replies)
Discussion started by: nuthalapati
4 Replies

8. UNIX for Dummies Questions & Answers

Bash: Regulating the number of processes a script can spawn

I've been working on some scripts in which I spawn some background processes. I'd like to be able to limit the number of processes, but have my script spawn additional processes as previous tasks finish. So, let's say I have 20 tasks to complete. Any given task could take from 1 to 10 minutes. ... (7 Replies)
Discussion started by: treesloth
7 Replies

9. Programming

Program to spawn multiple processes

I'm trying to make a program that will spawn multiple child processes then exit. I'm having trouble figuring out how to do this since after I fork, the child process begins running the program again (never ending). int main(void){ for(int i = 0; i < 3; i++){ fork(); }... (1 Reply)
Discussion started by: cagney58
1 Replies

10. UNIX for Advanced & Expert Users

how to make a parent wait on a child shells running in background?

Hi I have a shell script A which calls another 10 shell scripts which run in background. How do i make the parent script wait for the child scripts complete, or in other words, i must be able to do a grep of parent script to find out if the child scripts are still running. My Code: ... (1 Reply)
Discussion started by: albertashish
1 Replies
Login or Register to Ask a Question