mirror of https://github.com/pulumi/pulumi.git
31 lines
706 B
Python
31 lines
706 B
Python
import signal
|
|
import sys
|
|
import time
|
|
import os
|
|
|
|
signal_received = False
|
|
|
|
def signal_handler(signal, frame):
|
|
global signal_received
|
|
signal_received = True
|
|
|
|
signal.signal(signal.SIGINT, signal_handler)
|
|
if hasattr(signal, "SIGBREAK"):
|
|
# SIGBREAK is only available on Windows
|
|
signal.signal(signal.SIGBREAK, signal_handler)
|
|
print("ready", flush=True)
|
|
|
|
# HACK:
|
|
# time.sleep on Windows doesn't seem to be interruptible by signals
|
|
# so we'll sleep in small increments.
|
|
timeout = 3.0
|
|
while timeout > 0:
|
|
if signal_received:
|
|
print("exiting cleanly", flush=True)
|
|
sys.exit(0)
|
|
time.sleep(0.05)
|
|
timeout -= 0.05
|
|
|
|
print("error: signal not received", file=sys.stderr)
|
|
sys.exit(1)
|