lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


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