How to launch services that do not fork to background using the rc infrastructure?

Javier Martín Rueda jmrueda at diatel.upm.es
Tue Jan 22 15:19:52 UTC 2013


The typical and simple rc.d script to launch a service has, esentially, 
the following:

. /etc/rc.subr

name=SERVICE
rcvar=SERVICE_enable

command="/usr/local/sbin/PROGRAM"

pidfile=/var/run/${name}.pid
SERVICE_enable=${SERVICE_enable:-"NO"}

load_rc_config ${name}
run_rc_command "$1"

One of the ports (net/spread4) runs a PROGRAM that does not fork to 
background as a daemon and which does not have any command-line option 
to ask it to do so. Therefore, the rc.d script never finishes, with 
various consequences (system boot stops, no pid file generated...)

I tried adding a "&" to SERVICE_flags to see if it made it run in the 
background, but it didn't do the trick. I also quickly checked the 
/etc/rc.subr code to see if there is any way of forcing a background 
launch, but couldn't see anything. No luck searching the web or problem 
reports either.

So, my question is whether there is a non-obvious way of forcing a 
program to start in background using the rc infrastructure.



More information about the freebsd-ports mailing list