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

Greg Larkin glarkin at
Tue Jan 22 15:36:34 UTC 2013

Hash: SHA1

On 1/22/13 10:29 AM, Grzegorz Blach wrote:
> On 01/22/2013 04:19 PM, Javier Mart■n Rueda wrote:
>> 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.
> Try  command="/usr/sbin/daemon -c -f -p $pidfile PROGRAM" or some
> thing like this.

Here's a full example of that in the ViewVC rc.d script:

Hope it helps,
- -- 
Greg Larkin           - The Power To Serve     - Ready. Set. Code.      - Follow you, follow me
Version: GnuPG v1.4.13 (Darwin)
Comment: Using GnuPG with Thunderbird -


More information about the freebsd-ports mailing list