On Friday, 11 April 2003 02:22:19 UTC+5:30, Juan Jose Comellas wrote:
Under Windows you might have another kind of problem and end up with a leaked
process handle if you create a process with CreateProcess() and don't call CloseHandle() on the hThread and hProcess members of the returned PROCESS_INFORMATION struct.
On Thursday 10 April 2003 13:39, Randy Beckwith wrote:
Thanks, Caleb! I changed the code to not set the
process name and also set the options flag to inherit
the environment and everything worked fine.
I hate that when things don't work the same between
Linux and Windows.... :-( The orginal code worked
beautifully on Windows.
So I need to get the child process exit status to
avoid zombies.... Hmmm... more code just for Linux.
Sounds like i'm going to have to start up an extra
thread on Linux to just sit there and poll for exit
statuses. Not sure I like that but ....
Thanks again, Caleb.
Randy
--- Caleb Epstein <[email protected]> wrote:
On Thu, Apr 10, 2003 at 06:36:42AM -0700, Randy
Beckwith wrote:
My program is attempting to spawn 5 different
processes using
the Process_Manager interface. This works
perfectly > well on
Windows 2000 but on Linux (RedHat 8.0) I get 5
(zombied?) >
copies of the spawning program itself.
Zombie processes are an indication of spawning
processes
without "reaping" their exit status. You need to
call
ACE_Process_Manager::reap or ::wait to collect the
exit codes
of your children.
Note that if you are going to specify the
process_name, it
needs to be a real executable name that can be
exec()'ed, not
a symbolic string. Basically, it should match
argv[0] in your
command_line.
You might want too look at the
Process_Manager_Test.cpp test
code.
--
Caleb Epstein | bklyn . org | You can fool some of
the people all of the
cae at | Brooklyn Dust | time, and all of the
people some of the time,
bklyn dot org | Bunny Mfg. | but you can make a
fool of yourself anytime.
__________________________________________________
Do you Yahoo!?
Yahoo! Tax Center - File online, calculators, forms, and more http://tax.yahoo.com
HiGuys,
Even i am facing the similar problem now.
debuggerProcess = new ACE_Process();
ACE_Process_Options options;
options.command_line(cmdline.c_str());
// options.avoid_zombies(1);
pid_t pid = debuggerProcess->spawn(options);
Above code is working fine in windows, if i give the invalid input(cmdline) to spawn the process. function returns "-1" whereas in Linux, it always returns some positive number(>1). which means process has created. i checked it it is a zombie. if is
specify avoid_zombies, return value is always 1. i want to know when this call actually fails, please help me.
--
Juan Jose Comellas
([email protected])
--- SoupGate-Win32 v1.05
* Origin: fsxNet Usenet Gateway (21:1/5)