美文网首页
2019-05-19 进程常用函数

2019-05-19 进程常用函数

作者: 知成 | 来源:发表于2019-05-22 10:35 被阅读0次

    进程常用函数

    fork()

    • 用于创建进程的函数返回一个整数值
    • 返回0表示创建成功,且0为子进程的进程号
    • 返回-1表示创建失败

    getpid(),getppid()

    • getpid()用于返回当前进程的pid(进程标识符)
    • getppid()用于返回当前进程的父进程的pid

    setpgrp(),getpgrp()

    • setpgrp()返回新的组进程标识符
    • getpgrp()获得当前组的进程标识符
    #include<stdio.h>
    #include<unistd.h>
    #include<stdlib.h>
    
    int main()
    {
        pid_t pid;
        if((pid=fork())==-1)        //创建进程
            perror("fork");         //返回失败原因
        else if(pid==0)
        {
            printf("child_pid pid=%d\n",getpid());      //返回当前进程的标识符
            exit(0);
        }
        sleep(3);
        system("ps");
        exit(0);
    }
    
    

    exit(),_exit()

    • void exit(int status)
    • 用来正常结束当前进程的执行并把status返回给父进程,进程所有的缓冲区数据自动协会,并关闭未关闭的文件。
    • void _exit(int status)
    • 用来立即结束当前进程,并把参数status返回给父进程,并关闭未关闭的文件。并且向父进程传递SIGCHLD信号给父进程,父进程由wait函数获取子进程当前状态。(_e不会处理I/O缓冲去,若需要更新缓冲去请用exit()).

    getresuid(), getresgid()

    getresuid, getresgid获取真正的,you'xian和保存的用户或组ID

    • 看一下Linux函数库的源码
    #define _GNU_SOURCE         /* See feature_test_macros(7) */
           #include <unistd.h>
    
           int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid);
           int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid);
    
    

    返回值成功返回零,错误返回-1
    "RETURN VALUE
    On success, zero is returned. On error, -1 is returned, and errno is set appropriately."

    相关文章

      网友评论

          本文标题:2019-05-19 进程常用函数

          本文链接:https://www.haomeiwen.com/subject/nadczqtx.html