RE: gtk and system
- From: Matt Eisemann <meisemann dsrnet com>
- To: "'Lance Capser'" <lmc cyberhighway net>
- Cc: "gtk-list gnome org" <gtk-list gnome org>
- Subject: RE: gtk and system
- Date: Thu, 12 Oct 2000 12:21:39 -0400
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:lmc cyberhighway net]
Sent: Tuesday, October 10, 2000 11:28 AM
To: Matt Eisemann
Cc: gtk-list gnome org
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:MEISEMANN DSRNET COM]
> > Sent: Tuesday, October 10, 2000 8:59:34 AM
> > To: gtk-list gnome org
> > 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
> gtk-list gnome org
> http://mail.gnome.org/mailman/listinfo/gtk-list
------------------------------------------------------------------------
___ Lance Capser
/\_ \ Freelance Web Page Designer / Web Master /
\//\ \ ___ ___ ___ Unix SysAdmin / C,C++ Programmer
\ \ \ /' __` __`\ /'___\
----------------------------------------------
\_\ \_/\ \/\ \/\ \/\ \__/
/\____\ \_\ \_\ \_\ \____\ E-Mail: lmc cyberhighway net
\/____/\/_/\/_/\/_/\/____/ 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
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]