Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Call to Py_Initialize changes signal handler configuration #449

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
rmadsen-ks opened this issue Apr 4, 2017 · 3 comments · Fixed by #777
Closed

Call to Py_Initialize changes signal handler configuration #449

rmadsen-ks opened this issue Apr 4, 2017 · 3 comments · Fixed by #777

Comments

@rmadsen-ks
Copy link
Contributor

rmadsen-ks commented Apr 4, 2017

Environment

  • Pythonnet version:
    2.3.0
  • Python version:
    Python 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 20:42:59) [MSC v.1500 32 bit (Intel)] on win32
  • Operating System:
    Win 7, 64 bit

Details

  • What I'm trying to do:
    Console application with CTRL+C handling.

According to https://docs.python.org/2/c-api/init.html, Py_Initialize() changes the current signal configuration. In practice, signals like interrupt from CTRL+C in a console application seems to be ignored, which is not the desired behavior. This means that the event handler configured as this Console.CancelKeyPress += Console_CancelKeyPress; does nothing.

It seems Py_InitializeEx(0) should be used for general applications that does not include a python terminal. Alternatively, whether to use the Py_InitalizeEx(0) could be a argument to Python.Initialize()

To reproduce try running this:

class Program
    {
        static void Main(string[] args)
        {
            PythonEngine.Initialize(); // Comment this out to support CTRL+C again.
            Console.WriteLine("Waiting 5s.. Try CTRL+C.");
            System.Threading.Thread.Sleep(5000);
            Console.WriteLine("Done");
        }
    }
@den-run-ai
Copy link
Contributor

@rmadsen-ks this change looks reasonable! Can you submit a pull request?

@rmadsen-ks
Copy link
Contributor Author

@denfromufa, sure, I can do that tomorrow.

  1. Should it be an optional argument to PythonEngine.Initialize?
  2. Should there be a unit test testing the issue? (might be very complicated to implement)

@den-run-ai
Copy link
Contributor

den-run-ai commented Apr 4, 2017 via email

filmor pushed a commit to filmor/pythonnet that referenced this issue Aug 21, 2018
filmor pushed a commit to filmor/pythonnet that referenced this issue Oct 29, 2018
filmor pushed a commit to filmor/pythonnet that referenced this issue Nov 13, 2018
filmor pushed a commit to filmor/pythonnet that referenced this issue Nov 15, 2018
filmor pushed a commit to filmor/pythonnet that referenced this issue Nov 15, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants