Add 'wait and cooperative exit' handling for SIGINT

This allows compatible shells to stop script execution when
the user sends SIGINT.

Only tested on Ubuntu Linux
This commit is contained in:
h3ndr1k 2021-04-12 12:49:09 +02:00 committed by hendrik
parent 4fb25ff5a3
commit 981f87b00f
1 changed files with 7 additions and 1 deletions

View File

@ -478,7 +478,13 @@ def main(argv=None):
except SameFileError:
sys.exit('ERROR: fixed output name but more than one file to download')
except KeyboardInterrupt:
sys.exit('\nERROR: Interrupted by user')
print('\nERROR: Interrupted by user')
# 'wait and cooperative exit' handling of SIGINT
# this signals our parent that we exited because of SIGINT
# the compatible parent shell can then stop script execution
import signal
signal.signal(signal.SIGINT, signal.SIG_DFL)
os.kill(os.getpid(), signal.SIGINT)
__all__ = ['main', 'YoutubeDL', 'gen_extractors', 'list_extractors']