Python fcntl.FD_CLOEXEC Examples
The following are 30
code examples of fcntl.FD_CLOEXEC().
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
fcntl
, or try the search function
.
Example #1
Source File: wspbus.py From cherrypy with BSD 3-Clause "New" or "Revised" License | 7 votes |
def _set_cloexec(self): """Set the CLOEXEC flag on all open files (except stdin/out/err). If self.max_cloexec_files is an integer (the default), then on platforms which support it, it represents the max open files setting for the operating system. This function will be called just before the process is restarted via os.execv() to prevent open files from persisting into the new process. Set self.max_cloexec_files to 0 to disable this behavior. """ for fd in range(3, self.max_cloexec_files): # skip stdin/out/err try: flags = fcntl.fcntl(fd, fcntl.F_GETFD) except IOError: continue fcntl.fcntl(fd, fcntl.F_SETFD, flags | fcntl.FD_CLOEXEC)
Example #2
Source File: log.py From qubes-core-admin with GNU Lesser General Public License v2.1 | 6 votes |
def get_vm_logger(vmname): '''Initialise logging for particular VM name :param str vmname: VM's name :rtype: :py:class:`logging.Logger` ''' logger = logging.getLogger('vm.' + vmname) if logger.handlers: return logger old_umask = os.umask(0o007) try: handler = logging.FileHandler( os.path.join(LOGPATH, 'vm-{}.log'.format(vmname))) fcntl.fcntl(handler.stream.fileno(), fcntl.F_SETFD, fcntl.FD_CLOEXEC) finally: os.umask(old_umask) handler.setFormatter(formatter_log) logger.addHandler(handler) return logger
Example #3
Source File: daemonize.py From pykit with MIT License | 6 votes |
def write_pid_or_exit(self): self.pf = open(self.pidfile, 'w+r') pf = self.pf fd = pf.fileno() fcntl.fcntl(fd, fcntl.F_SETFD, fcntl.fcntl(fd, fcntl.F_GETFD, 0) | fcntl.FD_CLOEXEC) try: pid = os.getpid() logger.debug('write pid:' + str(pid)) pf.truncate(0) pf.write(str(pid)) pf.flush() except Exception as e: logger.exception('write pid failed.' + repr(e)) sys.exit(0)
Example #4
Source File: ipc.py From hupper with MIT License | 6 votes |
def set_inheritable(fd, inheritable): # On py34+ we can use os.set_inheritable but < py34 we must polyfill # with fcntl and SetHandleInformation if hasattr(os, 'get_inheritable'): if os.get_inheritable(fd) != inheritable: os.set_inheritable(fd, inheritable) elif WIN: h = get_handle(fd) flags = winapi.HANDLE_FLAG_INHERIT if inheritable else 0 winapi.SetHandleInformation(h, winapi.HANDLE_FLAG_INHERIT, flags) else: flags = fcntl.fcntl(fd, fcntl.F_GETFD) if inheritable: new_flags = flags & ~fcntl.FD_CLOEXEC else: new_flags = flags | fcntl.FD_CLOEXEC if new_flags != flags: fcntl.fcntl(fd, fcntl.F_SETFD, new_flags)
Example #5
Source File: httpserver.py From honeything with GNU General Public License v3.0 | 6 votes |
def bind(self, port, address=""): """Binds this server to the given port on the given IP address. To start the server, call start(). If you want to run this server in a single process, you can call listen() as a shortcut to the sequence of bind() and start() calls. """ assert not self._socket self._socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0) flags = fcntl.fcntl(self._socket.fileno(), fcntl.F_GETFD) flags |= fcntl.FD_CLOEXEC fcntl.fcntl(self._socket.fileno(), fcntl.F_SETFD, flags) self._socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) self._socket.setblocking(0) self._socket.bind((address, port)) self._socket.listen(128)
Example #6
Source File: ioloop.py From honeything with GNU General Public License v3.0 | 5 votes |
def _set_close_exec(self, fd): flags = fcntl.fcntl(fd, fcntl.F_GETFD) fcntl.fcntl(fd, fcntl.F_SETFD, flags | fcntl.FD_CLOEXEC)
Example #7
Source File: test_socket.py From ironpython3 with Apache License 2.0 | 5 votes |
def test_get_inheritable_cloexec(self): sock = socket.socket() with sock: fd = sock.fileno() self.assertEqual(sock.get_inheritable(), False) # clear FD_CLOEXEC flag flags = fcntl.fcntl(fd, fcntl.F_GETFD) flags &= ~fcntl.FD_CLOEXEC fcntl.fcntl(fd, fcntl.F_SETFD, flags) self.assertEqual(sock.get_inheritable(), True)
Example #8
Source File: posix.py From honeything with GNU General Public License v3.0 | 5 votes |
def set_close_exec(fd): flags = fcntl.fcntl(fd, fcntl.F_GETFD) fcntl.fcntl(fd, fcntl.F_SETFD, flags | fcntl.FD_CLOEXEC)
Example #9
Source File: fdesc.py From learn_python3_spider with MIT License | 5 votes |
def _setCloseOnExec(fd): """ Make a file descriptor close-on-exec. """ flags = fcntl.fcntl(fd, fcntl.F_GETFD) flags = flags | fcntl.FD_CLOEXEC fcntl.fcntl(fd, fcntl.F_SETFD, flags)
Example #10
Source File: pool.py From learn_python3_spider with MIT License | 5 votes |
def _set_non_inheritable_non_atomic(fd): """Set the close-on-exec flag on the given file descriptor.""" flags = fcntl(fd, F_GETFD) fcntl(fd, F_SETFD, flags | FD_CLOEXEC)
Example #11
Source File: posix.py From pySINDy with MIT License | 5 votes |
def set_close_exec(fd): flags = fcntl.fcntl(fd, fcntl.F_GETFD) fcntl.fcntl(fd, fcntl.F_SETFD, flags | fcntl.FD_CLOEXEC)
Example #12
Source File: server.py From telegram-robot-rss with Mozilla Public License 2.0 | 5 votes |
def __init__(self, addr, requestHandler=SimpleXMLRPCRequestHandler, logRequests=True, allow_none=False, encoding=None, bind_and_activate=True, use_builtin_types=False): self.logRequests = logRequests SimpleXMLRPCDispatcher.__init__(self, allow_none, encoding, use_builtin_types) socketserver.TCPServer.__init__(self, addr, requestHandler, bind_and_activate) # [Bug #1222790] If possible, set close-on-exec flag; if a # method spawns a subprocess, the subprocess shouldn't have # the listening socket open. if fcntl is not None and hasattr(fcntl, 'FD_CLOEXEC'): flags = fcntl.fcntl(self.fileno(), fcntl.F_GETFD) flags |= fcntl.FD_CLOEXEC fcntl.fcntl(self.fileno(), fcntl.F_SETFD, flags)
Example #13
Source File: daemon.py From ShadowsocksFork with Apache License 2.0 | 5 votes |
def write_pid_file(pid_file, pid): import fcntl import stat try: fd = os.open(pid_file, os.O_RDWR | os.O_CREAT, stat.S_IRUSR | stat.S_IWUSR) except OSError as e: shell.print_exception(e) return -1 flags = fcntl.fcntl(fd, fcntl.F_GETFD) assert flags != -1 flags |= fcntl.FD_CLOEXEC r = fcntl.fcntl(fd, fcntl.F_SETFD, flags) assert r != -1 # There is no platform independent way to implement fcntl(fd, F_SETLK, &fl) # via fcntl.fcntl. So use lockf instead try: fcntl.lockf(fd, fcntl.LOCK_EX | fcntl.LOCK_NB, 0, 0, os.SEEK_SET) except IOError: r = os.read(fd, 32) if r: logging.error('already started at pid %s' % common.to_str(r)) else: logging.error('already started') os.close(fd) return -1 os.ftruncate(fd, 0) os.write(fd, common.to_bytes(str(pid))) return 0
Example #14
Source File: fcgi.py From pycopia with Apache License 2.0 | 5 votes |
def close_on_exec(fd): flags = fcntl.fcntl(fd, fcntl.F_GETFD) flags |= fcntl.FD_CLOEXEC fcntl.fcntl(fd, fcntl.F_SETFD, flags)
Example #15
Source File: fdesc.py From learn_python3_spider with MIT License | 5 votes |
def _unsetCloseOnExec(fd): """ Make a file descriptor close-on-exec. """ flags = fcntl.fcntl(fd, fcntl.F_GETFD) flags = flags & ~fcntl.FD_CLOEXEC fcntl.fcntl(fd, fcntl.F_SETFD, flags)
Example #16
Source File: rtc.py From pycopia with Apache License 2.0 | 5 votes |
def __init__(self): self.rtc_fd = os.open("/dev/rtc", os.O_RDONLY) flags = fcntl.fcntl(self.rtc_fd, fcntl.F_GETFD) fcntl.fcntl(self.rtc_fd, fcntl.F_SETFD, flags | fcntl.FD_CLOEXEC)
Example #17
Source File: proctools.py From pycopia with Apache License 2.0 | 5 votes |
def close_on_exec(fd): flags = fcntl.fcntl(fd, fcntl.F_GETFD) flags |= fcntl.FD_CLOEXEC fcntl.fcntl(fd, fcntl.F_SETFD, flags)
Example #18
Source File: wsgiserver2.py From Hatkey with GNU General Public License v3.0 | 5 votes |
def prevent_socket_inheritance(sock): """Mark the given socket fd as non-inheritable (POSIX).""" fd = sock.fileno() old_flags = fcntl.fcntl(fd, fcntl.F_GETFD) fcntl.fcntl(fd, fcntl.F_SETFD, old_flags | fcntl.FD_CLOEXEC)
Example #19
Source File: wsgiserver3.py From Hatkey with GNU General Public License v3.0 | 5 votes |
def prevent_socket_inheritance(sock): """Mark the given socket fd as non-inheritable (POSIX).""" fd = sock.fileno() old_flags = fcntl.fcntl(fd, fcntl.F_GETFD) fcntl.fcntl(fd, fcntl.F_SETFD, old_flags | fcntl.FD_CLOEXEC)
Example #20
Source File: subprocess.py From pmatic with GNU General Public License v2.0 | 5 votes |
def _set_cloexec_flag(self, fd, cloexec=True): try: cloexec_flag = fcntl.FD_CLOEXEC except AttributeError: cloexec_flag = 1 old = fcntl.fcntl(fd, fcntl.F_GETFD) if cloexec: fcntl.fcntl(fd, fcntl.F_SETFD, old | cloexec_flag) else: fcntl.fcntl(fd, fcntl.F_SETFD, old & ~cloexec_flag)
Example #21
Source File: SimpleXMLRPCServer.py From pmatic with GNU General Public License v2.0 | 5 votes |
def __init__(self, addr, requestHandler=SimpleXMLRPCRequestHandler, logRequests=True, allow_none=False, encoding=None, bind_and_activate=True): self.logRequests = logRequests SimpleXMLRPCDispatcher.__init__(self, allow_none, encoding) SocketServer.TCPServer.__init__(self, addr, requestHandler, bind_and_activate) # [Bug #1222790] If possible, set close-on-exec flag; if a # method spawns a subprocess, the subprocess shouldn't have # the listening socket open. if fcntl is not None and hasattr(fcntl, 'FD_CLOEXEC'): flags = fcntl.fcntl(self.fileno(), fcntl.F_GETFD) flags |= fcntl.FD_CLOEXEC fcntl.fcntl(self.fileno(), fcntl.F_SETFD, flags)
Example #22
Source File: tempfile.py From pmatic with GNU General Public License v2.0 | 5 votes |
def _set_cloexec(fd): try: flags = _fcntl.fcntl(fd, _fcntl.F_GETFD, 0) except IOError: pass else: # flags read successfully, modify flags |= _fcntl.FD_CLOEXEC _fcntl.fcntl(fd, _fcntl.F_SETFD, flags)
Example #23
Source File: daemonize.py From pykit with MIT License | 5 votes |
def trylock_or_exit(self, timeout=10): interval = 0.1 n = int(timeout / interval) + 1 flag = fcntl.LOCK_EX | fcntl.LOCK_NB for ii in range(n): fd = os.open(self.lockfile, os.O_RDWR | os.O_CREAT) fcntl.fcntl(fd, fcntl.F_SETFD, fcntl.fcntl(fd, fcntl.F_GETFD, 0) | fcntl.FD_CLOEXEC) try: fcntl.lockf(fd, flag) self.lockfp = os.fdopen(fd, 'w+r') break except IOError as e: os.close(fd) if e[0] == errno.EAGAIN: time.sleep(interval) else: raise else: logger.info("Failure acquiring lock %s" % (self.lockfile, )) sys.exit(1) logger.info("OK acquired lock %s" % (self.lockfile))
Example #24
Source File: client.py From qubes-core-admin with GNU Lesser General Public License v2.1 | 5 votes |
def request_memory(self, amount): self.sock = socket.socket(socket.AF_UNIX) flags = fcntl.fcntl(self.sock.fileno(), fcntl.F_GETFD) flags |= fcntl.FD_CLOEXEC fcntl.fcntl(self.sock.fileno(), fcntl.F_SETFD, flags) self.sock.connect("/var/run/qubes/qmemman.sock") self.sock.send(str(int(amount)).encode('ascii')+b"\n") received = self.sock.recv(1024).strip() if received == b'OK': return True else: return False
Example #25
Source File: log.py From qubes-core-admin with GNU Lesser General Public License v2.1 | 5 votes |
def enable(): '''Enable global logging Use :py:mod:`logging` module from standard library to log messages. >>> import qubes.log >>> qubes.log.enable() # doctest: +SKIP >>> import logging >>> logging.warning('Foobar') # doctest: +SKIP ''' if logging.root.handlers: return handler_console = logging.StreamHandler(sys.stderr) handler_console.setFormatter(formatter_console) logging.root.addHandler(handler_console) if os.path.exists('/var/log/qubes'): log_path = '/var/log/qubes/qubes.log' else: # for tests, travis etc log_path = '/tmp/qubes.log' old_umask = os.umask(0o007) try: handler_log = logging.FileHandler(log_path, 'a', encoding='utf-8') fcntl.fcntl(handler_log.stream.fileno(), fcntl.F_SETFD, fcntl.FD_CLOEXEC) finally: os.umask(old_umask) handler_log.setFormatter(formatter_log) logging.root.addHandler(handler_log) logging.root.setLevel(logging.INFO)
Example #26
Source File: server.py From deepWordBug with Apache License 2.0 | 5 votes |
def __init__(self, addr, requestHandler=SimpleXMLRPCRequestHandler, logRequests=True, allow_none=False, encoding=None, bind_and_activate=True, use_builtin_types=False): self.logRequests = logRequests SimpleXMLRPCDispatcher.__init__(self, allow_none, encoding, use_builtin_types) socketserver.TCPServer.__init__(self, addr, requestHandler, bind_and_activate) # [Bug #1222790] If possible, set close-on-exec flag; if a # method spawns a subprocess, the subprocess shouldn't have # the listening socket open. if fcntl is not None and hasattr(fcntl, 'FD_CLOEXEC'): flags = fcntl.fcntl(self.fileno(), fcntl.F_GETFD) flags |= fcntl.FD_CLOEXEC fcntl.fcntl(self.fileno(), fcntl.F_SETFD, flags)
Example #27
Source File: posix.py From teleport with Apache License 2.0 | 5 votes |
def set_close_exec(fd: int) -> None: flags = fcntl.fcntl(fd, fcntl.F_GETFD) fcntl.fcntl(fd, fcntl.F_SETFD, flags | fcntl.FD_CLOEXEC)
Example #28
Source File: posix.py From teleport with Apache License 2.0 | 5 votes |
def set_close_exec(fd: int) -> None: flags = fcntl.fcntl(fd, fcntl.F_GETFD) fcntl.fcntl(fd, fcntl.F_SETFD, flags | fcntl.FD_CLOEXEC)
Example #29
Source File: posix.py From teleport with Apache License 2.0 | 5 votes |
def set_close_exec(fd): flags = fcntl.fcntl(fd, fcntl.F_GETFD) fcntl.fcntl(fd, fcntl.F_SETFD, flags | fcntl.FD_CLOEXEC)
Example #30
Source File: subprocess.py From satori with Apache License 2.0 | 5 votes |
def _set_cloexec_flag(self, fd, cloexec=True): try: cloexec_flag = fcntl.FD_CLOEXEC except AttributeError: cloexec_flag = 1 old = fcntl.fcntl(fd, fcntl.F_GETFD) if cloexec: fcntl.fcntl(fd, fcntl.F_SETFD, old | cloexec_flag) else: fcntl.fcntl(fd, fcntl.F_SETFD, old & ~cloexec_flag)