Re: How to catch a signal

2019-11-09 Thread W.Boeke via Digitalmars-d-learn

On Saturday, 9 November 2019 at 12:56:52 UTC, Dennis wrote:


Put an ampersand before the function to get its address:

  signal.signal(SIGWINCH,cast(void function(int)) &set_winch);


In C you can omit the & when taking a function address, but 
when you do that in D it tries to call the function and cast 
the return value of the function instead.


Bingo! That worked. The modified code is:

int winch;
extern(C) void set_winch(int sig) nothrow @nogc @system {
  enum SIGWINCH = 28;
  signal.signal(SIGWINCH,&set_winch);
  winch = sig;
}

Wouter


Re: How to catch a signal

2019-11-09 Thread Dennis via Digitalmars-d-learn

On Saturday, 9 November 2019 at 12:44:20 UTC, W.Boeke wrote:

What should be the right way to accomplish this?


Put an ampersand before the function to get its address:

  signal.signal(SIGWINCH,cast(void function(int)) &set_winch);


In C you can omit the & when taking a function address, but when 
you do that in D it tries to call the function and cast the 
return value of the function instead.