posix.py 948 B

1234567891011121314151617181920212223242526272829
  1. #
  2. # Copyright 2011 Facebook
  3. #
  4. # Licensed under the Apache License, Version 2.0 (the "License"); you may
  5. # not use this file except in compliance with the License. You may obtain
  6. # a copy of the License at
  7. #
  8. # http://www.apache.org/licenses/LICENSE-2.0
  9. #
  10. # Unless required by applicable law or agreed to in writing, software
  11. # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  12. # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
  13. # License for the specific language governing permissions and limitations
  14. # under the License.
  15. """Posix implementations of platform-specific functionality."""
  16. import fcntl
  17. import os
  18. def set_close_exec(fd: int) -> None:
  19. flags = fcntl.fcntl(fd, fcntl.F_GETFD)
  20. fcntl.fcntl(fd, fcntl.F_SETFD, flags | fcntl.FD_CLOEXEC)
  21. def _set_nonblocking(fd: int) -> None:
  22. flags = fcntl.fcntl(fd, fcntl.F_GETFL)
  23. fcntl.fcntl(fd, fcntl.F_SETFL, flags | os.O_NONBLOCK)