##// END OF EJS Templates
Fixed several bugs involving the insertion of new lines. Pressing Enter in the ConsoleWidget now works as expected.
Fixed several bugs involving the insertion of new lines. Pressing Enter in the ConsoleWidget now works as expected.

File last commit:

r2754:6f2df84b
r2896:d807b505
Show More
exitpoller.py
41 lines | 1.2 KiB | text/x-python | PythonLexer
import os
import time
from threading import Thread
class ExitPollerUnix(Thread):
""" A Unix-specific daemon thread that terminates the program immediately
when the parent process no longer exists.
"""
def __init__(self):
super(ExitPollerUnix, self).__init__()
self.daemon = True
def run(self):
# We cannot use os.waitpid because it works only for child processes.
from errno import EINTR
while True:
try:
if os.getppid() == 1:
os._exit(1)
time.sleep(1.0)
except OSError, e:
if e.errno == EINTR:
continue
raise
class ExitPollerWindows(Thread):
""" A Windows-specific daemon thread that terminates the program immediately
when a Win32 handle is signaled.
"""
def __init__(self, handle):
super(ExitPollerWindows, self).__init__()
self.daemon = True
self.handle = handle
def run(self):
from _subprocess import WaitForSingleObject, WAIT_OBJECT_0, INFINITE
result = WaitForSingleObject(self.handle, INFINITE)
if result == WAIT_OBJECT_0:
os._exit(1)