Kaydet (Commit) 858cb73b authored tarafından Guido van Rossum's avatar Guido van Rossum

Two changes (here we go again :-( ).

1) The __builtins__ variable in the __main__ module is set to the
__builtin__ module instead of its __dict__.

2) Get rid of the SIGHUP and SIGTERM handlers.  They can't be made to
work reliably when threads may be in use, they are Unix specific, and
Python programmers can now program this functionality is a safer way
using the signal module.
üst df9db1ea
......@@ -373,8 +373,9 @@ initmain()
Py_FatalError("can't create __main__ module");
d = PyModule_GetDict(m);
if (PyDict_GetItemString(d, "__builtins__") == NULL) {
if (PyDict_SetItemString(d, "__builtins__",
PyEval_GetBuiltins()))
PyObject *bimod = PyImport_ImportModule("__builtin__");
if (bimod == NULL ||
PyDict_SetItemString(d, "__builtins__", bimod) != 0)
Py_FatalError("can't add __builtins__ to __main__");
}
}
......@@ -1060,46 +1061,13 @@ Py_Exit(sts)
#endif
}
#ifdef HAVE_SIGNAL_H
static RETSIGTYPE
sighandler(sig)
int sig;
{
signal(sig, SIG_DFL); /* Don't catch recursive signals */
/* Do essential exit processing only */
call_sys_exitfunc();
call_ll_exitfuncs();
#ifdef HAVE_KILL
kill(getpid(), sig); /* Pretend the signal killed us */
#else
exit(1);
#endif
/*NOTREACHED*/
}
#endif
static void
initsigs()
{
RETSIGTYPE (*t)();
#ifdef HAVE_SIGNAL_H
#ifdef SIGPIPE
signal(SIGPIPE, SIG_IGN);
#endif
#ifdef SIGHUP
t = signal(SIGHUP, SIG_IGN);
if (t == SIG_DFL)
signal(SIGHUP, sighandler);
else
signal(SIGHUP, t);
#endif
#ifdef SIGTERM
t = signal(SIGTERM, SIG_IGN);
if (t == SIG_DFL)
signal(SIGTERM, sighandler);
else
signal(SIGTERM, t);
#endif
#endif /* HAVE_SIGNAL_H */
PyOS_InitInterrupts(); /* May imply initsignal() */
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment