Пример #1
0
 def setup_unix_signals(self):
     import fcntl
     read_fd, write_fd = os.pipe()
     cloexec_flag = getattr(fcntl, 'FD_CLOEXEC', 1)
     for fd in (read_fd, write_fd):
         flags = fcntl.fcntl(fd, fcntl.F_GETFD)
         fcntl.fcntl(fd, fcntl.F_SETFD, flags | cloexec_flag | os.O_NONBLOCK)
     for sig in (signal.SIGINT, signal.SIGTERM):
         signal.signal(sig, lambda x, y: None)
         signal.siginterrupt(sig, False)
     signal.set_wakeup_fd(write_fd)
     self.signal_notifier = QSocketNotifier(read_fd, QSocketNotifier.Read, self)
     self.signal_notifier.setEnabled(True)
     self.signal_notifier.activated.connect(self.signal_received, type=Qt.QueuedConnection)
Пример #2
0
 def handle_unix_signals(self):
     if iswindows:
         # TODO: test this on windows
         self.signal_read_socket, self.signal_write_socket = socket.socketpair(
         )
         self.signal_read_socket.setblocking(False)
         self.signal_write_socket.setblocking(False)
         read_fd, write_fd = self.signal_read_socket.fileno(
         ), self.signal_write_socket.fileno()
     else:
         read_fd, write_fd = os.pipe2(os.O_NONBLOCK | os.O_CLOEXEC)
     for sig in (signal.SIGINT, signal.SIGTERM):
         signal.signal(sig, lambda x, y: None)
         signal.siginterrupt(sig, False)
     signal.set_wakeup_fd(write_fd)
     self.signal_notifier = QSocketNotifier(read_fd, QSocketNotifier.Read,
                                            self)
     self.signal_notifier.setEnabled(True)
     self.signal_notifier.activated.connect(self.signal_received,
                                            type=Qt.QueuedConnection)