Chris wrote:
 > Also, is it possible to have smf run processes that stay in the
 > foreground?

   Such an arrangement is possible by telling startd that the service
   has a duration of "child".  See svc.startd(1M).

 > Wouldn't this be the most reliable way for smf to know if
 > a process is running or not?

   No.  Perhaps surprisingly, it is less reliable.

   One problem is that such an arrangement breaks down in the face of
   svc.startd failure.  SMF uses process contracts to track processes,
   which are more reliable than the traditional wait() mechanism in that
   events of interest are reliably communicated to the listener, even if
   the listener itself dies and is restarted.

   Another problem is that we use the completion of the start method to
   indicate that a service is ready.  When running a process in the
   foreground, you lose the ability to discern when the service has
   completed starting up.  (We could have solved this problem by
   requiring application changes, but that is a non-starter in most
   cases).

   Dave


Reply via email to