C语言 进程(UNIX环境)

一、相关函数
函数描述
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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

书香水墨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值