Skip to content

Commit

Permalink
process.close: Move closing of std fds after kill
Browse files Browse the repository at this point in the history
Windows processes would block on fd.close() when the main thread is suspended.
  • Loading branch information
peace-maker committed Jan 17, 2024
1 parent d147f3b commit 2ee5664
Showing 1 changed file with 9 additions and 9 deletions.
18 changes: 9 additions & 9 deletions pwnlib/tubes/process.py
Original file line number Diff line number Diff line change
Expand Up @@ -798,15 +798,6 @@ def close(self):
# First check if we are already dead
self.poll()

# close file descriptors
for fd in [self.proc.stdin, self.proc.stdout, self.proc.stderr]:
if fd is not None:
try:
fd.close()
except IOError as e:
if e.errno != errno.EPIPE and e.errno != errno.EINVAL:
raise

if not self._stop_noticed:
try:
self.proc.kill()
Expand All @@ -816,6 +807,15 @@ def close(self):
except OSError:
pass

# close file descriptors
for fd in [self.proc.stdin, self.proc.stdout, self.proc.stderr]:
if fd is not None:
try:
fd.close()
except IOError as e:
if e.errno != errno.EPIPE and e.errno != errno.EINVAL:
raise


def fileno(self):
if not self.connected():
Expand Down

0 comments on commit 2ee5664

Please sign in to comment.