[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Sleeping forever
- From: Sean Conner <sean@...>
- Date: Tue, 27 Feb 2018 21:21:05 -0500
It was thus said that the Great Laurent FAILLIE once stated:
> Hello,
> I'm writting a bridge from incoming MQTT messages (using paho.mqtt
> library) to Postgresql database insertion using pgmoon. As this tool will
> be only even driven and as all the processing will be done in the MQTT
> callback, my tool will have nothing to do in its main loop. Which is the
> best way the handle this infinite "do nothing" ? The target system is
> Linux so I can obviously use POSIX stuffs.
Well ... several ways ...
while(1)
pause();
This will sleep until the next signal happens.
while(1)
select(0,NULL,NULL,NULL,0);
will also block indefinitely unless a signal happens (and system calls
aren't restarted as an option).
while(1)
sleep(UINT_MAX);
will sleep until a signal happens. This may use SIGALRM so avoid if you
need to handle that signal.
while(1)
clock_nanosleep(
CLOCK_REALTIME,
TIMER_ABSTIME,
(strct timespec)&{
.tv_sec = (time_t)-1,
.tv_nsec = 0
},
NULL);
Like the sleep() one, only it doesn't use SIGALRM.
My preference is for calling pause().
-spc