summaryrefslogtreecommitdiff
path: root/ace/Process_Manager.cpp
diff options
context:
space:
mode:
authorschmidt <douglascraigschmidt@users.noreply.github.com>2000-01-18 04:16:59 +0000
committerschmidt <douglascraigschmidt@users.noreply.github.com>2000-01-18 04:16:59 +0000
commit5edac8ca7a4545cc74b256538dec94f9c8598344 (patch)
tree9d67308398a783953b71533e9cc07f60671a1239 /ace/Process_Manager.cpp
parent948d6bfec7f0b11d5ea06b8c71bc7f076832fdb3 (diff)
downloadATCD-5edac8ca7a4545cc74b256538dec94f9c8598344.tar.gz
ChangeLogTag:Mon Jan 17 18:03:17 2000 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu>
Diffstat (limited to 'ace/Process_Manager.cpp')
-rw-r--r--ace/Process_Manager.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/ace/Process_Manager.cpp b/ace/Process_Manager.cpp
index 5d5d14ea1c9..567d2a93af7 100644
--- a/ace/Process_Manager.cpp
+++ b/ace/Process_Manager.cpp
@@ -168,6 +168,7 @@ ACE_Process_Manager::open (size_t size,
{
ACE_TRACE ("ACE_Process_Manager::open");
+#if !defined (ACE_LACKS_SETPGID)
// Set up a process group so that the thread that opened this
// Manager will be able to put children into its own group and wait
// for them.
@@ -176,6 +177,7 @@ ACE_Process_Manager::open (size_t size,
ASYS_TEXT ("%p.\n"),
ASYS_TEXT ("ACE_Process_Manager::open: can't create a ")
ASYS_TEXT ("process group; some wait functions may fail")));
+#endif /* ACE_LACKS_SETPGID */
if (r)
{
@@ -252,11 +254,13 @@ ACE_Process_Manager::close (void)
{
ACE_TRACE ("ACE_Process_Manager::close");
+#if !defined (ACE_WIN32)
if (this->reactor ())
{
this->reactor ()->remove_handler (this, 0);
this->reactor (0);
}
+#endif /* !ACE_WIN32 */
ACE_MT (ACE_GUARD_RETURN (ACE_Thread_Mutex, ace_mon, this->lock_, -1));
@@ -581,6 +585,13 @@ ACE_Process_Manager::remove_proc (size_t i)
this->process_table_[i].exit_notify_ = 0;
}
+#if defined (ACE_WIN32)
+ ACE_Reactor *r = this->reactor ();
+ if (r != 0)
+ r->remove_handler (this->process_table_[i].process_->gethandle (),
+ ACE_Event_Handler::DONT_CALL);
+#endif /* ACE_WIN32 */
+
this->process_table_[i].process_->unmanage ();
this->process_table_[i].process_ = 0;