do you have any example code. I added waitpid and it still does not
work.......
PS thanks for your help and here is what I did:
for(count = 0; count < length; count++)
{
row = (int)g_list_nth_data(GTK_CLIST(display_tasks)->selection, count);
/* sequentially get row to stop */
strcpy(stop_task,"kill -9 ");
sprintf(process_id,"%d",tasks->task_list[row].process_id;
strcat(stop_task,process_id);
printf("execute command: %s \n",stop_task);
if ((pid = fork()) < 0)
{
perror("fork error");
result = -1;
exe_status = FALSE;
}
else if(pid == 0)
{
if(execl("/bin/sh","sh","-c",stop_task,(char *) 0) < 0)
{
perror("execlp error");
}
}
if(waitpid(pid,NULL,0) != pid)
{
printf("wait error \n");
}
} /* end for */
Any good examples I can look at. This piece of code goes through a CLIST
and get the row the user has selected and attempts to stop that task.
Thanks ahead of time for your help.
-----Original Message-----
From: Lance Capser [SMTP:[EMAIL PROTECTED]]
Sent: Tuesday, October 10, 2000 11:28 AM
To: Matt Eisemann
Cc: [EMAIL PROTECTED]
Subject: Re: gtk and system
Matt,
Under UNIX, child processes will wait around until notification that
the
parent is "aware" of the childs <defunct> status. In the GTK application,
after you kill the child's PID, execute a waitpid() on the child's process
to
allow the system to clean up all the child's resources. You can choose to
stop execution in the parent and wait for the child to die, or simply get
the
status and continue. Either way, the child process will go away and you
won't be left with a bunch of zombie processes lying around.
Lance
Matt Eisemann wrote:
> > ----------
> > From: Matt Eisemann[SMTP:[EMAIL PROTECTED]]
> > Sent: Tuesday, October 10, 2000 8:59:34 AM
> > To: [EMAIL PROTECTED]
> > Subject: gtk and system
> > Auto forwarded by a Rule
> >
> This may not be a gtk problem, but let me explain my problem. I have an
> GTK+ application which starts processes using fork and execle, which
works
> great. I save the process id (pid) of that process . Later on, a user
> pushes a button called 'stop tasks' and when called it concatenates the
> 'kill' command with the saved pid. Below is some basic code.
> When I try to kill the processes I started the system command does not
> return an error code but the process consistently goes into a <defunct>
> mode instead of dying. However, when I leave my GTK+ application, the
> <defunct> process does die. But why not immediately. Is this a gtk
> problem, or a UNIX limitation or is the fact that I started the processes
> with the GTK application cause some sort of a parent - child
relationship.
> Thanks ahead of time for your help.
>
> sprintf(process_id,"%d",tasks->task_list[row].process_id);
> strcpy(executable,"kill -9 ");
> strcat(executable,process_id);
>
> system(process_id);
>
> _______________________________________________
> gtk-list mailing list
> [EMAIL PROTECTED]
> http://mail.gnome.org/mailman/listinfo/gtk-list
------------------------------------------------------------------------
___ Lance Capser
/\_ \ Freelance Web Page Designer / Web Master /
\//\ \ ___ ___ ___ Unix SysAdmin / C,C++ Programmer
\ \ \ /' __` __`\ /'___\
----------------------------------------------
\_\ \_/\ \/\ \/\ \/\ \__/
/\____\ \_\ \_\ \_\ \____\ E-Mail: [EMAIL PROTECTED]
\/____/\/_/\/_/\/_/\/____/ Phone: (208) 461-0222
Pager: (208) 391-0448
"If DOS had been better in the first place, I might not have started
this.-
Linus Torvalds
_______________________________________________
gtk-list mailing list
[EMAIL PROTECTED]
http://mail.gnome.org/mailman/listinfo/gtk-list