Python os.tcgetpgrp() Examples
The following are 12
code examples of os.tcgetpgrp().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
os
, or try the search function
.
Example #1
Source File: child.py From kitty with GNU General Public License v3.0 | 6 votes |
def foreground_processes(self) -> List[ProcessDesc]: if self.child_fd is None: return [] try: pgrp = os.tcgetpgrp(self.child_fd) foreground_processes = processes_in_group(pgrp) if pgrp >= 0 else [] def process_desc(pid: int) -> ProcessDesc: ans: ProcessDesc = {'pid': pid, 'cmdline': None, 'cwd': None} with suppress(Exception): ans['cmdline'] = cmdline_of_process(pid) with suppress(Exception): ans['cwd'] = cwd_of_process(pid) or None return ans return [process_desc(x) for x in foreground_processes] except Exception: return []
Example #2
Source File: terminal_input.py From goreviewpartner with GNU General Public License v3.0 | 6 votes |
def initialise(self): if not self.enabled: return if termios is None: self.enabled = False return try: self.tty = open("/dev/tty", "w+") os.tcgetpgrp(self.tty.fileno()) self.clean_tcattr = termios.tcgetattr(self.tty) iflag, oflag, cflag, lflag, ispeed, ospeed, cc = self.clean_tcattr new_lflag = lflag & (0xffffffff ^ termios.ICANON) new_cc = cc[:] new_cc[termios.VMIN] = 0 self.cbreak_tcattr = [ iflag, oflag, cflag, new_lflag, ispeed, ospeed, new_cc] except Exception: self.enabled = False return
Example #3
Source File: service.py From oslo.service with Apache License 2.0 | 6 votes |
def _is_daemon(): # The process group for a foreground process will match the # process group of the controlling terminal. If those values do # not match, or ioctl() fails on the stdout file handle, we assume # the process is running in the background as a daemon. # http://www.gnu.org/software/bash/manual/bashref.html#Job-Control-Basics try: is_daemon = os.getpgrp() != os.tcgetpgrp(sys.stdout.fileno()) except io.UnsupportedOperation: # Could not get the fileno for stdout, so we must be a daemon. is_daemon = True except OSError as err: if err.errno == errno.ENOTTY: # Assume we are a daemon because there is no terminal. is_daemon = True else: raise return is_daemon
Example #4
Source File: traitar.py From traitar with GNU General Public License v3.0 | 6 votes |
def check_dir(self, out_dir): if os.path.exists(out_dir): #check if the process is run in background try: if os.getpgrp() == os.tcgetpgrp(sys.stdout.fileno()): print self.user_message % out_dir user_input = raw_input() while user_input not in ["1", "2", "3"]: user_input = raw_input().strip() if user_input == "1": return False if user_input == "2": shutil.rmtree(out_dir) os.mkdir(out_dir) return True if user_input == "3": sys.exit(1) else: sys.stderr.write(self.error_message % out_dir) except OSError: sys.stderr.write(self.error_message % out_dir) else: os.mkdir(out_dir) return True
Example #5
Source File: shutit_global.py From shutit with MIT License | 5 votes |
def determine_interactive(self): """Determine whether we're in an interactive shell. Sets interactivity off if appropriate. cf http://stackoverflow.com/questions/24861351/how-to-detect-if-python-script-is-being-run-as-a-background-process """ try: if not sys.stdout.isatty() or os.getpgrp() != os.tcgetpgrp(sys.stdout.fileno()): self.interactive = 0 return False except Exception: self.interactive = 0 return False if self.interactive == 0: return False return True
Example #6
Source File: UserFile.py From pycopia with Apache License 2.0 | 5 votes |
def tcgetpgrp(self): return os.tcgetpgrp(self.fileno())
Example #7
Source File: expect.py From pycopia with Apache License 2.0 | 5 votes |
def tcgetpgrp(self): return os.tcgetpgrp(self._fo.fileno())
Example #8
Source File: child.py From kitty with GNU General Public License v3.0 | 5 votes |
def pid_for_cwd(self) -> Optional[int]: with suppress(Exception): assert self.child_fd is not None pgrp = os.tcgetpgrp(self.child_fd) foreground_processes = processes_in_group(pgrp) if pgrp >= 0 else [] if len(foreground_processes) == 1: return foreground_processes[0] return self.pid
Example #9
Source File: terminal_input.py From goreviewpartner with GNU General Public License v3.0 | 5 votes |
def stop_was_requested(self): """Check whether a 'keyboard stop' instruction has been sent. Returns true if ^X has been sent on the controlling terminal. Consumes all available input on /dev/tty. """ if not self.enabled: return False # Don't try to read the terminal if we're in the background. # There's a race here, if we're backgrounded just after this check, but # I don't see a clean way to avoid it. if os.tcgetpgrp(self.tty.fileno()) != os.getpid(): return False try: termios.tcsetattr(self.tty, termios.TCSANOW, self.cbreak_tcattr) except EnvironmentError: return False try: seen_ctrl_x = False while True: c = os.read(self.tty.fileno(), 1) if not c: break if c == "\x18": seen_ctrl_x = True except EnvironmentError: seen_ctrl_x = False finally: termios.tcsetattr(self.tty, termios.TCSANOW, self.clean_tcattr) return seen_ctrl_x
Example #10
Source File: logger.py From conary with Apache License 2.0 | 5 votes |
def startLog(self): """Starts the log to path. The parent process becomes the "slave" process: its stdin, stdout, and stderr are redirected to a pseudo tty. A child logging process controls the real stdin, stdout, and stderr, and writes stdout and stderr both to the screen and to the logfile at path. """ self.restoreTerminalControl = (sys.stdin.isatty() and os.tcgetpgrp(0) == os.getpid()) masterFd, slaveFd = os.openpty() signal.signal(signal.SIGTTOU, signal.SIG_IGN) pid = os.fork() if pid: # make parent process the pty slave - the opposite of # pty.fork(). In this setup, the parent process continues # to act normally, while the child process performs the # logging. This makes it simple to kill the logging process # when we are done with it and restore the parent process to # normal, unlogged operation. os.close(masterFd) self._becomeLogSlave(slaveFd, pid) return try: os.close(slaveFd) for writer in self.writers: writer.start() logger = _ChildLogger(masterFd, self.lexer, self.restoreTerminalControl, self.withStdin) try: logger.log() finally: self.lexer.close() finally: os._exit(0)
Example #11
Source File: __init__.py From conary with Apache License 2.0 | 5 votes |
def switch_pgid(self): try: if os.getpgrp() != os.tcgetpgrp(0): self.__old_pgid = os.getpgrp() os.setpgid(0, os.tcgetpgrp(0)) else: self.__old_pgid = None except OSError: self.__old_pgid = None
Example #12
Source File: __init__.py From epdb with MIT License | 5 votes |
def switch_pgid(self): try: if os.getpgrp() != os.tcgetpgrp(0): self.__old_pgid = os.getpgrp() os.setpgid(0, os.tcgetpgrp(0)) else: self.__old_pgid = None except OSError: self.__old_pgid = None