How do I need to modify the C example from http://abyz.co.uk/rpi/pigpio/examples.html for continious monitoring of Wiegand readers? I need to run it as background process. For now I have a code: #include <stdio.h> #include <pigpio.h> #include "wiegand.h" void callback1(int bits, uint32_t value) { FILE *saved = stdout; stdout = fopen("log_readers.txt", "a"); printf("Reader_1: bits=%d value=%u\n", bits, value); fclose(stdout); stdout = saved; } void callback2(int bits, uint32_t value) { FILE *saved = stdout; stdout = fopen("log_readers.txt", "a"); printf("Reader_2: bits=%d value=%u\n", bits, value); fclose(stdout); stdout = saved; } int main(int argc, char *argv[]) { Pi_Wieg_t * w1; Pi_Wieg_t * w2; if (gpioInitialise() < 0) return 1; w1 = Pi_Wieg(14, 15, callback1, 5); w2 = Pi_Wieg(23, 24, callback2, 5); sleep(300); Pi_Wieg_cancel(w1); Pi_Wieg_cancel(w2); gpioTerminate(); } After 5 minutes of execution it's terminated, I suppose cause of `sleep(300)`. If I wrap it by infinite loop like this: int main(int argc, char *argv[]) { while(0) { Pi_Wieg_t * w1; ... } } it's terminated immediately after running.