首页 > 系统相关 >c语言--进程相关函数

c语言--进程相关函数

时间:2023-01-03 14:34:16浏览次数:31  
标签:函数 -- void pid ID 进程 include id

1. 获取进程ID

头文件:#include <unistd.h>

  1. pid_t getpid(void):获取进程ID
  2. pid_t getppid(void):获取父进程ID
  3. pid_t getuid(void):获取用户ID
  4. pid_t geteuid(void):获取有效用户ID
  5. pid_t getgid(void):获取组ID
  6. pid_t getegid(void):获取有效组ID

其中pid_t类型本质是无符号整型,定义在头文件#include <types.h>,在不同的平台上上可能是typedef int pid_t或是typedef long pid_t

示例

#include <stdio.h>
#include <unistd.h>

int main() {
    printf("the process id is [%d]\n", getpid());
    printf("the parent process id is [%d]\n", getppid());
    printf("the user id is [%d]\n", getuid());
    printf("the effective id is [%d]\n", geteuid());
    printf("the group id is [%d]\n", getgid());
    printf("the effective group id is [%d]\n", getegid());
    return 0;
}

结果

the process id is [2749]
the parent process id is [721]
the user id is [1000]
the effective id is [1000]
the group id is [1000]
the effective group id is [1000]

设置进程ID

  1. setuid()
    头文件:#include <unistd.h>;
    声明:int setuid(uid_t uid);
    功能:修改用户ID(无论是否有效),参数uid表示改变后的新ID;
    返回值:如果成功修改当前进程的用户ID,返回0;否则返回-1;
  2. seteuid()
    头文件:#include <unistd.h>;
    声明:int seteuid(uid_t uid);
    功能:修改有效用户的ID,参数uid表示改变后的新ID;
    返回值:如果成功修改当前进程的有效用户ID,返回0;否则返回-1;
  3. setgid()
    头文件:#include <unistd.h>;
    声明:int setgid(gid_t gid);
    功能:修改组ID(无论是否有效),参数gid表示改变后的ID;
    返回值:如果修改成功返回0;否则返回-1;
  4. setegid()
    头文件:#include <unistd.h>
    声明:int setegid(gid_t gid);
    功能:修改有效组ID,参数gid表示改变后的ID;
    返回值:如果修改成功返回0,否则返回-1;

创建进程

  1. fork()
    头文件:#include <unistd.h>
    声明:pid_t fork(void);
    功能:创建一个新进程,得到一个新的可用进程ID。并将父进程的数据段和堆栈段复制到子进程的进程空间,并且和父进程共享代码段(代码段是只读的,不存在修改的问题)
    返回值:
  • 父进程中,返回新创建的子进程的进程ID
  • 子进程中

标签:函数,--,void,pid,ID,进程,include,id
From: https://www.cnblogs.com/liyugui/p/17021877.html

相关文章