◐ Shell
clean mode source ↗

Message 252445 - Python tracker

The spawn() function has this code outside of any error handler:

pid, master_fd = fork()
if pid == CHILD:
    os.execlp(argv[0], *argv)

If fork() succeeds, there will actually be a parent Python process and a child Python process. If exec() then fails, an exception will escape the spawn() function in the child process, while the parent process will carry on as if all is well. Maybe it would be worthwhile studying how the “subprocess” module handles exec() failure in the child process.