Sponsored Content
Top Forums Shell Programming and Scripting Strange SIGINT propagation between Parent/Child sh scripts Post 302359456 by steadyonabix on Tuesday 6th of October 2009 03:19:38 PM
Old 10-06-2009
'When I execute the "parent" process with a ">./parent",' This does not work for me but . parent does run it. Similarly I changed './child &' to '. child &' and got the following output: -

TX5XN:/home/brad/wip/signals>. parent
parent running
child started. pid is 3698
[1] 7191
child_id = 7191

a ps -ef gave: -

brad 7191 3698 0 20:04 pts/0 00:00:00 ksh

CTRL C of parent produced this output: -

^Cchild got signal 2
Wait Status recorded when parent continues: 0
Parent Still Running after the child exits!

"child got signal 2" is the message from the child's signal handler, not the parent; at this point a ps shows that the child is gone.

A further CTRL C gives: -

^CSIGINT caught in Parent
Parent sending: kill -n 2 7191
kill: 7191: no such process
SIGINT caught in Parent
Parent sending: kill -n 2 7191
kill: 7191: no such process

Note that the handler is called twice.

When I run your code with the line './child &' in it I get the output: -

TX5XN:/home/brad/wip/signals>. parent
parent running
ksh: .: line 19: ./child: not found
[1] 7398
child_id = 7398
Wait Status recorded when parent continues: 127
Parent Still Running after the child exits!
^CSIGINT caught in Parent
Parent sending: kill -n 2 7398
kill: 7398: no such process
SIGINT caught in Parent
Parent sending: kill -n 2 7398
kill: 7398: no such process

Are you sure you actually ran the child process or am I missing something? I don't have much experience of signal handlers?
 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

what are parent and child processes all about?

I don't follow what these are... this is what my text says... "When a process is started, a duplicate of that process is created. This new process is called the child and the process that created it is called the parent. The child process then replaces the copy for the code the parent... (1 Reply)
Discussion started by: xyyz
1 Replies

2. Filesystems, Disks and Memory

How hard can it be? ps child/parent

:( Since I'm fairly new to the scene and don't have much experience in shell programming, I decided to check out the net for a useful script or two. What I'm looking for is a script that would let me enter a PID and then show the process tree associated with it. So it would display the (grand-)... (2 Replies)
Discussion started by: velde046
2 Replies

3. UNIX for Dummies Questions & Answers

kill parent and child

Hello all, I have gone through the search and looked at posting about idle users and killing processes. Here is my question I would like to kill an idle user ( which I can do) but how can I asure that all of his process is also killed whit out tracing his inital start PID. I have tried this on a... (4 Replies)
Discussion started by: larry
4 Replies

4. Shell Programming and Scripting

Parent/Child Processes

Hello. I have a global function name func1() that I am sourcing in from script A. I call the function from script B. Is there a way to find out which script called func1() dynamically so that the func1() can report it in the event there are errors? Thanks (2 Replies)
Discussion started by: yoi2hot4ya
2 Replies

5. Shell Programming and Scripting

Error trapping in parent/child scripts

Greets all. I'm using Slackware 12.0 with the bash shell. Calling my scripts with /bin/sh... I'm building gnome-2.18.3 and I have all my build scripts ready and working but I'm calling them from a parent script which executes each child/build script in a certain order (for loop). I have "set... (6 Replies)
Discussion started by: madpenguin
6 Replies

6. Shell Programming and Scripting

multiple child scripts running in backgroud, how to use grep on the parent?

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: ... (5 Replies)
Discussion started by: albertashish
5 Replies

7. UNIX for Advanced & Expert Users

Child Killing Parent

Hi all, I am writing a script which calls other third party scripts that perform numerous actions. I have no control over these scripts. My problem is, one of these scripts seems to execute and do what it is meant to do, but my calling / parent script always exits at that point. I need to... (4 Replies)
Discussion started by: mark007
4 Replies

8. Homework & Coursework Questions

Need help with deleting childīs parent and child subprocess

1. The problem statement, all variables and given/known data: I need to make an program that in a loop creates one parent and five children with fork(). The problem i'm trying to solve is how to delete the parent and child of the childīs process. 2. Relevant commands, code, scripts,... (0 Replies)
Discussion started by: WhiteFace
0 Replies

9. Shell Programming and Scripting

forking a child process and kill its parent to show that child process has init() as its parent

Hi everyone i am very new to linux , working on bash shell. I am trying to solve the given problem 1. Create a process and then create children using fork 2. Check the Status of the application for successful running. 3. Kill all the process(threads) except parent and first child... (2 Replies)
Discussion started by: vizz_k
2 Replies

10. UNIX for Dummies Questions & Answers

parent and child directory

does anyone know how to check in an 'if' statement if a particular directory is a child directory of a particular directory? help ~ (2 Replies)
Discussion started by: ymc1g11
2 Replies
vfork(2)							System Calls Manual							  vfork(2)

NAME
vfork - spawn new process; share virtual memory SYNOPSIS
REMARKS
is a higher performance version of that is provided on some systems where a performance advantage can be attained. If the calling process is multi-threaded, the newly created child process will only contain one thread. This one thread will be a copy of the thread calling differs from only in that the child process can share code and data with the calling process (parent process). This speeds cloning activ- ity significantly at a risk to the integrity of the parent process if is misused. The use of for any purpose except as a prelude to an immediate or is not supported. Any program that relies upon the differences between and is not portable across HP-UX systems. All HP-UX implementations must provide the entry but it is permissible for them to treat it identically to On some implementations the two are not distinguished because the implementation is as efficient as possible. Other versions may do the same to avoid the overhead of sup- porting two similar calls. DESCRIPTION
can be used to create new processes without fully copying the address space of the old process. If a forked process is simply going to do an (see exec(2)), the data space copied from the parent to the child by is not used. This is particularly inefficient in a paged environ- ment, making particularly useful. Depending upon the size of the parent's data space, can give a significant performance improvement over differs from in that the child borrows the parent's memory and thread of control until a call to or an exit (either by a call to or abnor- mally (see exec(2) and exit(2)). The parent process is suspended while the child is using its resources. returns 0 in the child's context and (later) the pid of the child in the parent's context. can normally be used just like It does not work, however, to return while running in the child's context from the procedure which called since the eventual return from would then return to a no longer existent stack frame. The window begins at the call and ends when the child completes its call. RETURN VALUE
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, no child process is created, and is set to indicate the error. ERRORS
fails and no child process is created if any of the following conditions are encountered: The system-wide limit on the total number of processes under execution would be exceeded. The system-imposed limit on the total number of processes under execution by a single user would be exceeded. DEPENDENCIES
Servers Process times for the parent and child processes within the window may be inaccurate. Parent and child processes share the same stack space within the window. If the size of the stack has been changed within this win- dow by the child process (return from or call to a function, for example), it is likely that the parent and child processes will be killed with signal or In the window, a call to (see signal(2) that installs a catching function can affect handling of the signal by the parent. The par- ent is not affected if the handling is being set to or or if is used (see sigaction(2)). AUTHOR
was developed by the University of California, Berkeley. SEE ALSO
exec(2), exit(2), fork(2), sigaction(2), wait(2). vfork(2)
All times are GMT -4. The time now is 10:58 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy