I have a Python code like this.
try:
while some_cond_is_still_true:
....
except KeyboardInterrupt: # Handle CTRL+C
...
While the KeyboardInterrupt is handled fine if I run the python script by myself, it is not handled if I run it as another user using su, like this.
su <some_other_user> -c 'python myprogram.py <args>'
How can I solve this problem?
Advertisement
Answer
The su command creates a new interactive shell and executes the command inside it.
When you use option -c (--command) the su command creates a new session with the user indicated in the command. To solve this use the option --session-command.
In this case the command will be this:
su user_name --session-command 'python myprogram.py <args>'
in this case you should be able to catch CTRL+C interrupt.