一、相关函数
函数 | 描述 |
---|---|
pid_t getpid(void); | 位于:<unistd.h>; 功能:获取调用进程的进程ID; 返回:调用进程的进程ID。 |
pid_t getppid(void); | 位于:<unistd.h>; 功能:获取调用进程的父进程ID; 返回:调用进程的父进程ID。 |
uid_t getuid(void); | 位于:<unistd.h>; 功能:获取调用进程的实际用户; 返回:调用进程的实际用户。 |
uid_t geteuid(void); | 位于:<unistd.h>; 功能:获取调用进程的有效用户; 返回:调用进程的有效用户。 |
gid_t getgid(void); | 位于:<unistd.h>; 功能:获取调用进程的实际组; 返回:调用进程的实际组。 |
gid_t getegid(void); | 位于:<unistd.h>; 功能:获取调用进程的有效组; 返回:调用进程的实际组。 |
pid_t fork(void); | 位于:<unistd.h>; 功能:在当前进程中创建一子进程; 返回:子进程返回0, 父进程返回子进程ID,出错返回-1。 |
pid_t wait(int *statloc); | 位于:<sys/wait.h>; 功能:等待子进程终止; 返回:成功返回进程ID,出错返回0或-1。 |
pid_t waitpid(pid_t pid, int *statloc, int options); | 位于:<sys/wait.h>; 功能::等待子进程终止; 返回:成功返回进程ID,出错返回0或-1。 |
int waitid(idytpe idtype, id_t id, siginfo_t *infop, int options); | 位于:<sys/wait.h>; 功能:获取进程终止状态; 返回:成功返回0, 失败返回-1。 |
int wait3(int *statloc, int options, struct rusage *rusage); | 位于:<sys/wait.h>; 功能:获取进程终止状态; 返回:成功返回进程ID,失败返回-1。 |
int wait4(pid_t pid, int *statloc, int options, struct rusage *rusage); | 位于:<sys/wait.h>; 功能:获取进程终止状态; 返回:成功返回进程ID,失败返回-1。 |
int execl(const char *pathname, const char *arg0, …); | 位于:<unistd.h>; 功能:初始化执行新的程序; 返回:成功不返回,失败返回-1。 |
int execv(const char *pathname, const char *arg0); | 位于:<unistd.h>; 功能:初始化执行新的程序; 返回:成功不返回,失败返回-1。 |
int execle (const char *path, const char *arg, …); | 位于:<unistd.h>; 功能:初始化执行新的程序; 返回:成功不返回,失败返回-1。 |
int execve (const char *path, char *const argv[], char *const envp[]); | 位于:<unistd.h>; 功能:初始化执行新的程序; 返回:成功不返回,失败返回-1。 |
execlp (const char *__file, const char *__arg, …); | 位于:<unistd.h>; 功能:初始化执行新的程序; 返回:成功不返回,失败返回-1。 |
execvp (const char *__file, char *const __argv[]); | 位于:<unistd.h>; 功能:初始化执行新的程序; 返回:成功不返回,失败返回-1。 |
fexecve (int __fd, char *const __argv[], char *const __envp[]); | 位于:<unistd.h>; 功能:初始化执行新的程序; 返回:成功不返回,失败返回-1。 |
int setuid(uid_t uid); | 位于:<unistd.h>; 功能:设置实际用户ID; 返回:成功返回0,失败返回-1。 |
int setgid(gid_t gid); | 位于:<unistd.h>; 功能:; 返回:成功返回0,失败返回-1。 |
int setreuid(uid_t ruid, uid_t euid); | 位于:<unistd.h>; 功能:叫唤实际用户ID和有效用户ID; 返回:成功返回0,失败返回-1。 |
int setregid(gid_t rgid, gid_t egid); | 位于:<unistd.h>; 功能:交换实际用户组ID和有效组ID的值; 返回:成功返回0,失败返回-1。 |
int seteuid(uid_t uid); | 位于:<unistd.h>; 功能:更改有效用户ID; 返回:成功返回0,失败返回-1。 |
int setegid(gid_t gid); | 位于:<unistd.h>; 功能:更改用户组有效ID; 返回:成功返回0,失败返回-1。 |
int system(const char *command); | 位于:<stdlib.h>; 功能:把 command 指定的命令名称或程序名称传给要被命令处理器执行的主机环境,并在命令完成后返回; 返回:如果发生错误,则返回值为 -1,否则返回命令的状态。 |
char *getlogin(void); | 位于:<unistd.h>; 功能:获取用户登录名; 返回:成功返用户登录名,失败返回NULL。 |
int nice(int incr); | 位于:<unistd.h>; 功能:设置进程执行的优先级,incr越高优先级越低; 返回:成功返回新的nice值NZERO,失败返回-1。 |
int getpriority(int which, id_t who); | 位于:<sys/resource.h>; 功能:获取进程的nice值; 返回:成功返回-NZERO~NZERO-1之间的nic值,失败返回-1。 |
int setpriority(int which, id_t who, int value); | 位于:<sys/resource.h>; 功能:为进程、进程组和属于特定用户ID的所有进程设置优先级; 返回:成功返回0,失败返回-1。 |
clock_t tiems(struct tms *buf); | 位于:<sys/times.h>; 功能:用于进程获取自己已经终止子进程的墙上时钟时间、用户CPU时间和系统CPU时间; 返回:成功返回流失的墙上时钟时间(以时钟滴答数为单位),失败返回-1。 |
pid_t getpgrp(void); | 位于:<unistd.h>; 功能:获取调用进程的进程组; 返回:返回调用进程的进程组ID。 |
pid_t getpgid(pid_t pid); | 位于:<unistd.h>; 功能:获取进程的进程组ID; 返回:成功返回进程组ID;出错返回-1。 |
int setpgid(pid_t pid, pid_t pgid); | 位于:<unistd.h>; 功能:加入一个现有的进程组或者创建一个新的进程组; 返回:成功返回0,出错返回-1。 |
pid_t setsid(void); | 位于:<unistd.h>; 功能:建立一个新会话; 返回:成功返回进程组ID,出错返回-1。 |
pid_t getsid(pid_t pid); | 位于:<unistd.h>; 功能:获取会话首进程的进程组ID; 返回:成功返回会话首进程的进程组ID,出错返回-1。 |
pid_t tcgetpgrp(int fd); | 位于:<unistd.h>; 功能:返回前台进制组ID,它与在fd上打开的终端相关联; 返回:成功返回前台进程组ID,出错返回-1。 |
pid_t tcsetpgrp(int fd, pid_t pgrpid); | 位于:<unistd.h>; 功能:将前台进程组ID设置为pgrpid; 返回:成功返回0,出错返回-1。 |
#include <stdio.h>
#include <unistd.h>
int globvar = 6;
char buf[] = "a write to stdout\n";
int main(int argc, char *argv[]) {
int var;
pid_t pid;
var = 88;
if (write(STDOUT_FILENO, buf, sizeof(buf)-1) != sizeof(buf) - 1){
printf("fork error");
}
printf("before fork\n");
if ((pid = fork()) < 0) {
printf("fork error");
} else if (pid == 0) {
globvar++;
var++;
} else {
sleep(2);
}
printf("pid = %ld, glob = %d, var = %d\n", (long)getpid(), globvar, var);
printf("after!\n");
return 0;
}