Solaris / OpenSolarisThis forum is for the discussion of Solaris, OpenSolaris, OpenIndiana, and illumos.
General Sun, SunOS and Sparc related questions also go here. Any Solaris fork or distribution is welcome.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
Hi,
After forking, there are two different processes sharing some thing like text (code) section etc. Child knows the process id of its parent ( that information can be got from getppid() ) but it is not possible for the parent to know the id's of its children.
There is a work around for this. You can use shared memory ( list implementation) that would be used by the children to put there and parent's id while the parent would go through that list and if its id is there on the node as the parent id, it would kill the child process using kill() as child has put its pid information there.
ithink there is no problem in knowing the pid of a child process ...
so kill() would work just fine...
fork returns twice..once in the child (where it returns 0)
and once in the parent where it is a positive value that is the pid of the child process..you can alway do a kill on it
>>>code
#include <stdio.h>
#include <unistd.h>
#include <signal.h>
#include <sys/types.h>
int main(void)
{
int pid;
pid = fork();
if ( pid == 0)
{
printf("in child with pid = %d\n",getpid());
sleep(30);
_exit(0);
}
else
{
printf("n parent where child pid is = %d\n",pid);
kill(pid,SIGINT);
}
return 0;
}
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.