Skip to content

Signal Handling in Oil

andychu edited this page Jun 12, 2019 · 14 revisions

Handling signals in Python exposes you to EINTR.

See PEP 475 -- Retry system calls failing with EINTR. We're backporting this work. That's the main purpose of the native/posixmodule.c fork (in addition to removing over 7,000 lines of unused code).

Signals Oil cares about:

  • SIGWINCH -- to get notified about Window size changes
  • ... TODO

Relevant Files

  • demo/eintr.sh in the repository

Difficulties With Signals In General

(This section isn't strictly related to Oil)

  • Signals and multithreading
  • API issues
    • Signals can be coalesced. e.g. When you get SIGCHLD, you have to call os.wait() multiple times to get multiple notifications. What about other signals?
    • Simultaneously waiting for both a signal and an event on a file descriptor. Solution: "the self-pipe trick".
Clone this wiki locally