08-24-2005
Hi,
The program u have given itself gives the answer .. rite ...
When we fork a new child process from a parent process like pid=fork(); the fork function returns the process id of the child process spawned ....
getpid returns the process id of the process which calls this function and getppid gives the process id of its parent process ...
C the output I got :
#include <unistd.h>
#include <iostream.h>
int main()
{
int pid;
pid=fork();
switch(pid)
{
case -1: printf("\n THE PROCESS HAS NOT BEEN CREATED \n");
break;
case 0: printf("\n I HAVE ENTERED IN THE CHILD PROCESS \n");
printf("\n THE pid returned by fork to me is %d",pid);
printf("\n THE CHILD PID IN CHILD PROCESS IS %d",getpid());
printf("\n THE PARENT PID IN CHILD PROCESS IS %d",getppid());
break;
default: printf("\n I AM NOW IN THE PARENT PROCESS \n");
printf("\n THE pid returned by fork to me is %d",pid);
printf("\n THE CHILD PID IN PARANT PROCESS IS %d",getpid());
printf("\n THE PARENT PID IN PARENT PROCESS IS %d \n",getppid());
break;
}
}
Output:
--------
I HAVE ENTERED IN THE CHILD PROCESS
THE pid returned by fork to me is 0
THE CHILD PID IN CHILD PROCESS IS 25524
THE PARENT PID IN CHILD PROCESS IS 25521
I AM NOW IN THE PARENT PROCESS
THE pid returned by fork to me is 25524
THE CHILD PID IN PARANT PROCESS IS 25521
THE PARENT PID IN PARENT PROCESS IS 10024
Explanation:
-------------
Here if u chk, we can c that the getpid result of the parent process and getppid result of child process are same (25521)
Again the process 10024 which is the parent of the parent process is nothing but the shell .. ;-)
$ ps -eaf | grep 10024
appsuser 10024 9343 0 08:08:19 pts/60 0:01 -ksh
Hope its clear now ....
10 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
how to find the chid process id from given parent process id.... (the chid process doesnot have sub processes inturn) (3 Replies)
Discussion started by: guhas
3 Replies
2. UNIX for Advanced & Expert Users
Hello,
I'm running one script every night and that's kick off through cron jobs.
Inside the script i'm checking whether my script is already running or not.
I'm using following command to check whether is running or not.
ps -eaf | grep "test_PID.ksh" | grep -v "grep test_PID.ksh"... (5 Replies)
Discussion started by: nirav_soni
5 Replies
3. UNIX for Dummies Questions & Answers
hello
i am not a unix programmer but i need to solve a particular problem using unix.
suppose i have a user XYZ logged on to a system called ABC. i want to get the parent process id for the user and kill it
i am using
ps -ef | grep XYZ | grep ABC
it returns me all the processes for... (2 Replies)
Discussion started by: ajit.yadav83
2 Replies
4. UNIX for Dummies Questions & Answers
I need to kill all the processes of user "release" on system "PROterm" or the parent process for the user
I did this
ps -ef | grep PROterm | grep release
i got
release 2900014 2961494 0 12:19:44 pts/3 0:00 PROterm
release 3264694 2900014 0 12:19:44 - 0:00 PROterm
if i... (7 Replies)
Discussion started by: ajit.yadav83
7 Replies
5. Shell Programming and Scripting
Hi All,
I have two ksh script. 1st script calls the 2nd script and the second script calls an 'C' program.
I want 1st script to wait until the 'C' program completes.
I cant able to get the process id for the 'C' program (child process) to make the 1st script to wait for the second... (7 Replies)
Discussion started by: sennidurai
7 Replies
6. Shell Programming and Scripting
Hey all, I need to launch a script from within 2 other scripts that can run independently of the two parent scripts... Im having a hard time doing this, if anyone knows how please let me know.
More detail.
ScriptA (bash), ScriptB (ksh), ScriptC (bash)
ScriptA, launches ScriptB
ScirptB,... (7 Replies)
Discussion started by: trey85stang
7 Replies
7. Emergency UNIX and Linux Support
Hello, everyone.
Here's a program:
pid_t pid = fork();
if (0 == pid) // child process
{
execvp ...;
}
I send a signal (such as SIGINT) to the parent process, the child process receive the signal as well as the parent process.
However I don't want to child process to receive the... (7 Replies)
Discussion started by: jackliang
7 Replies
8. Shell Programming and Scripting
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
9. Shell Programming and Scripting
Hi:
I have 2 script on AIX server.
The child script is called by parent script.
For example:
The parent script full name is /home/op/def/parent.spt, which calls
/home/op/abc/child.spt
I want to get the parent program name with full path name (i.e. /home/op/def/parent.spt),
in... (3 Replies)
Discussion started by: cstsang
3 Replies
10. Programming
Hi:
I have a program written in FORTRAN running on AIX platform.
It is because missing of documentation and without root password, therefore we want to modify the program so that we can find out which script/program that call this FORTRAN program.
I have google for few days, all of them are... (3 Replies)
Discussion started by: cstsang
3 Replies
getpid(2) System Calls getpid(2)
NAME
getpid, getpgrp, getppid, getpgid - get process, process group, and parent process IDs
SYNOPSIS
#include <unistd.h>
pid_t getpid(void);
pid_t getpgrp(void);
pid_t getppid(void);
pid_t getpgid(pid_t pid);
DESCRIPTION
The getpid() function returns the process ID of the calling process.
The getpgrp() function returns the process group ID of the calling process.
The getppid() function returns the parent process ID of the calling process.
The getpgid() function returns the process group ID of the process whose process ID is equal to pid, or the process group ID of the calling
process, if pid is equal to 0.
RETURN VALUES
Upon successful completion, these functions return the process group ID. Otherwise, getpgid() returns (pid_t)-1 and sets errno to indicate
the error.
ERRORS
The getpgid() function will fail if:
EPERM The process whose process ID is equal to pid is not in the same session as the calling process, and the implementation
does not allow access to the process group ID of that process from the calling process.
ESRCH There is no process with a process ID equal to pid.
The getpgid() function may fail if:
EINVAL The value of the pid argument is invalid.
ATTRIBUTES
See attributes(5) for descriptions of the following attributes:
+-----------------------------+-----------------------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+-----------------------------+-----------------------------+
|Interface Stability |Standard |
+-----------------------------+-----------------------------+
|MT-Level |Async-Signal-Safe |
+-----------------------------+-----------------------------+
SEE ALSO
intro(2), exec(2), fork(2), getsid(2), setpgid(2), setpgrp(2), setsid(2), signal(3C), attributes(5), standards(5)
SunOS 5.10 28 Dec 1996 getpid(2)