// Copyright (c) 2004 David Muse // See the COPYING file for more information. #ifndef RUDIMENTS_PROCESS_H #define RUDIMENTS_PROCESS_H #include <rudiments/private/processincludes.h> // wrap: // unistd.h - nice() // setsid() // getgroups() // fork(),vfork() // profil() // acct() // getdtablesize() // brk()/sbrk() // syscall() // sched.h - functions for manipulating the scheduler // sched_setparam(),sched_getparam() // sched_setscheduler(),sched_getscheduler() // sched_yield(), // sched_get_priority_max(),sched_get_priority_min() // sched_rr_get_interval() // sched_setaffinity(),sched_getaffinity() // sys/acct.h - acct() - process accounting on/off // sys/ptrace.h - ptrace() // sys/resource.h - get/set process priority/resource usage // getrlimit(),setrlimit() // getrusage() // getpriority(),setpriority() // sys/stat.h - umask() // sys/times.h - times() - function for getting process times // not in solaris - // unistd.h - daemon() // not in many systems - // unistd.h - group_member() // getresuid(),getresgid() // setresuid(),setresgid() // sys/gmon.h and sys/gmon_out.h - monstartup() // linux only - // execinfo.h - backtrace(),backtrace_symbols(), // backtrace_symbols_fd() // sys/prctl.h - prctl() // not in bsd - // ucontext.h - user-level context switching // getcontext(),setcontext(),swapcontext(),makecontext() #ifdef RUDIMENTS_NAMESPACE namespace rudiments { #endif class process { public: static pid_t getProcessId(); // returns the process id of the current process static pid_t getParentProcessId(); // returns the process id of the parent process // of the current process static pid_t getProcessGroupId(); // returns the process group id of the // current process static pid_t getProcessGroupId(pid_t pid); // returns the process group id of the // process pid static bool setProcessGroupId(); // sets the process group id of the current // process to the current process id static bool setProcessGroupId(pid_t pgid); // sets the process group id of the current // process to pgid static bool setProcessGroupId(pid_t pid, pid_t pgid); // sets the process group id of the process // pid to pgid static pid_t getSessionId(); // returns the session id of the current process static pid_t getSessionId(pid_t pid); // returns the session id of the process pid static gid_t getRealUserId(); // returns the real user id of the // current process static gid_t getEffectiveUserId(); // returns the effective user id of the // current process static bool setUserId(uid_t uid); // Sets the effective user id of the current // process to uid. If the effective user id // is root, the real and saved user id's are // also set. // Returns true on success and false on failure. static bool setEffectiveUserId(uid_t uid); // Sets the effective user id of the current // process to uid. Does not set the real // or saved user id's. // Returns true on success and false on failure. static bool setRealAndEffectiveUserId(uid_t uid, uid_t euid); // Sets the real user id of the current process // to uid and the effective user id of // the current process to euid. // If the real user id is set or the effective // user id is set to a value not equal to the // previous real user id, the saved user id is // set to the new effective user id. // Returns true on success and false on failure. static gid_t getRealGroupId(); // returns the real group id of the // current process static gid_t getEffectiveGroupId(); // returns the effective group id of the // current process static bool setGroupId(gid_t gid); // Sets the effective group id of the current // process to gid. If the effective group id // is root, the real and saved group id's are // also set. // Returns true on success and false on failure. static bool setEffectiveGroupId(gid_t gid); // Sets the effective group id of the current // process to gid. Does not set the real // or saved group id's. // Returns true on success and false on failure. static bool setRealAndEffectiveGroupId(gid_t gid, gid_t egid); // Sets the real group id of the current process // to gid and the effective group id of // the current process to egid. // If the real group id is set or the effective // group id is set to a value not equal to the // previous real group id, the saved group id is // set to the new effective group id. // Returns true on success and false on failure. }; #ifdef RUDIMENTS_NAMESPACE } #endif #endif