1. 获取进程ID
头文件:#include <unistd.h>
pid_t getpid(void)
:获取进程IDpid_t getppid(void)
:获取父进程IDpid_t getuid(void)
:获取用户IDpid_t geteuid(void)
:获取有效用户IDpid_t getgid(void)
:获取组IDpid_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
- setuid()
头文件:#include <unistd.h>
;
声明:int setuid(uid_t uid)
;
功能:修改用户ID(无论是否有效),参数uid
表示改变后的新ID;
返回值:如果成功修改当前进程的用户ID,返回0;否则返回-1; - seteuid()
头文件:#include <unistd.h>
;
声明:int seteuid(uid_t uid)
;
功能:修改有效用户的ID,参数uid
表示改变后的新ID;
返回值:如果成功修改当前进程的有效用户ID,返回0;否则返回-1; - setgid()
头文件:#include <unistd.h>
;
声明:int setgid(gid_t gid)
;
功能:修改组ID(无论是否有效),参数gid
表示改变后的ID;
返回值:如果修改成功返回0;否则返回-1; - setegid()
头文件:#include <unistd.h>
声明:int setegid(gid_t gid)
;
功能:修改有效组ID,参数gid
表示改变后的ID;
返回值:如果修改成功返回0,否则返回-1;
创建进程
- fork()
头文件:#include <unistd.h>
声明:pid_t fork(void)
;
功能:创建一个新进程,得到一个新的可用进程ID。并将父进程的数据段和堆栈段复制到子进程的进程空间,并且和父进程共享代码段(代码段是只读的,不存在修改的问题)
返回值:
- 父进程中,返回新创建的子进程的进程ID
- 子进程中