#!/usr/bin/env python3 import subprocess import os import signal from time import sleep sleep1 = subprocess.Popen([ "sleep", "1000" ]).pid # Comment the print or sleep below to break things reliably sleep(0.00008) # this value makes it break 50% of the time on a Core i7-7700HQ CPU #print("Spawned sleep1: %i" % (sleep1)) os.kill(sleep1, signal.SIGTERM) print("Killed sleep1: %i" % (sleep1)) sleep2 = subprocess.Popen([ "sleep", "1000" ]).pid print("Spawned sleep2: %i" % (sleep2)) os.kill(sleep2, signal.SIGTERM) (child_pid, _) = os.waitpid(-1, 0) print("Reaped: %i" % (child_pid)) (child_pid, _) = os.waitpid(-1, 0) print("Reaped: %i" % (child_pid))