Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    1. COThanks! I think that sounds like what I'd like to have -- but I don't have enough details to understand how to do it yet. In particular, I don't know how to properly set a signal that will interrupt the blocking call and permanently stop it rather than going back to it once the interrupt handler exits. Could you add a bit of explanation on how to do that?
      singulars
    2. COFrom the GNU link in my answer: "To be able to use the alarm function to interrupt a system call which might block otherwise indefinitely it is important to not set the SA_RESTART flag when registering the signal handler using sigaction." I'd try that. Then the question is what the library code does when its primitive operations return EINTR. If you're lucky, the library you're using will have some sort of "stop" function you can call from your signal handler, or it will just return from the blocking call on EINTR. If it is more persistent and simply blocks again on EINTR, life is harder.
      singulars
    3. COOkay, that's starting to make sense -- I'd missed that line, and also hadn't realized that SA_RESTART existed or that anything might happen to the interrupted code other than it continuing where it left off. Thanks for pointing that out! (I'm not sure what the library code does in this case, or to what extent we can rely on that since it's got hooks for people to add different code at that level for different communication libraries. But I'll find out.)
      singulars
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload