[][src]Struct spirit_daemonize::Daemon

#[non_exhaustive]pub struct Daemon {
    pub user: SecId,
    pub group: SecId,
    pub pid_file: Option<PathBuf>,
    pub workdir: Option<PathBuf>,
    pub daemonize: bool,
}

A configuration fragment for configuration of daemonization.

This describes how to go into background with some details.

The fields can be manipulated by the user of this crate. However, it is not possible to create the struct manually. This is on purpose, some future versions might add more fields. If you want to create one, use Daemon::default and modify certain fields as needed.

Examples

let mut daemon = Daemon::default();
daemon.workdir = Some("/".into());

See also

If you want to daemonize, but not to switch users (or allow switching users), either because the daemon needs to keep root privileges or because it is expected to be already started as ordinary user, use the UserDaemon instead.

Fields (Non-exhaustive)

Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.
user: SecId

The user to drop privileges to.

The user is not changed if not provided.

group: SecId

The group to drop privileges to.

The group is not changed if not provided.

pid_file: Option<PathBuf>

Where to store a PID file.

If not set, no PID file is created.

workdir: Option<PathBuf>

Switch to this working directory at startup.

If not set, working directory is not switched.

daemonize: bool

Enable the daemonization.

Even if this is false, some activity (changing users, setting PID file, etc) is still done, but it doesn't go to background.

Implementations

impl Daemon[src]

pub fn prepare(&self) -> Result<Daemonize, AnyError>[src]

Prepare for daemonization.

This does the fist (fallible) phase of daemonization and schedules the rest, though the Daemonize. This is mostly used through [`extension'], but can also be used manually.

pub unsafe fn daemonize(&self) -> Result<(), AnyError>[src]

Perform the daemonization according to the setup inside.

This is the routine one would call if using the fragments manually, not through the spirit management and extension.

Safety

This is safe to call only if either the application is yet single-threaded (it's OK to start more threads afterwards) or if daemonize is false.

Trait Implementations

impl Clone for Daemon[src]

impl Debug for Daemon[src]

impl Default for Daemon[src]

impl<'de> Deserialize<'de> for Daemon[src]

impl Eq for Daemon[src]

impl From<(Daemon, Opts)> for Daemon[src]

impl From<(UserDaemon, Opts)> for Daemon[src]

impl From<UserDaemon> for Daemon[src]

impl PartialEq<Daemon> for Daemon[src]

impl Serialize for Daemon[src]

impl StructDoc for Daemon[src]

impl StructuralEq for Daemon[src]

impl StructuralPartialEq for Daemon[src]

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> DeserializeOwned for T where
    T: for<'de> Deserialize<'de>, 
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> IntoResult<T> for T[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.