On Wednesday, 26 December 2018 at 03:19:45 UTC, Norbert Preining wrote:
Hello everyone,
we are writing a program that synchronizes the OneDrive cloud service with the local computer, and run it as daemon in the background. To ensure proper database shutdown on exit, we need to install signal handlers that react to SIGINT etc.

[...]

Now, unfortunately the call to the shutdown procedure is not possible in `@nogc`, so I am a bit at loss how to deal with all this.

The code I am using is:
```
extern(C) @nogc @system void exitHandler(int value) {
       printf("Ooohhhh got %d\n", value);
// workaround for segfault in std.net.curl.Curl.shutdown() on exit
       oneDrive.http.shutdown();
       exit(0);
}
```
and in `main` before entering the loop:
```
signal(SIGINT, &exitHandler);
```

Any suggestion would be very much appreciated.

Norbert

The technique to use here is to wrap the non-gc code in a delegate, cast it as a @nogc delegate and call it, see [1] for more details.

[1] https://p0nce.github.io/d-idioms/#Bypassing-@nogc
  • Handling signals in D Norbert Preining via Digitalmars-d-learn
    • Re: Handling signals in D Basile B via Digitalmars-d-learn

Reply via email to