#ifndef INCLUDED_BOBCAT_FORK_
#define INCLUDED_BOBCAT_FORK_

#include <sys/types.h>

namespace FBB
{    

class Fork
{
    pid_t d_pid;

    public:
        virtual ~Fork();
        void fork();

    protected:
        pid_t pid() const;                                  // .f

        virtual void childRedirections();   // do child redirections
        virtual void childProcess() = 0;    // must be implemented

        virtual void parentRedirections();  // do parent redirections
        virtual void parentProcess() = 0;   // must be implemented

        void prepareDaemon() const;         // prepares for a daemon

        int waitForChild();                 // returns the status
};

#include "pid.f"

} // FBB

#endif



