2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 4进程原语:fork()函数 getpid()函数和getppid()函数 getuid()函数 getgid()函数 vfork()

4进程原语:fork()函数 getpid()函数和getppid()函数 getuid()函数 getgid()函数 vfork()

时间:2022-08-09 22:19:56

相关推荐

4进程原语:fork()函数 getpid()函数和getppid()函数 getuid()函数 getgid()函数 vfork()



1fork()函数

子进程复制父进程的0到3g空间和父进程内核中的PCB,但id号不同。fork调用一次返回两次,有以下特点:

A:父进程中返回子进程ID

B:子进程中返回0

C:读时共享,写时复制

2fork()依赖的头文件

#include <unistd.h>

3fork()函数说明:

pid_tfork(void);

通过该函数创建一个子进程

4案例说明:

总结:

A因为读时共享和写时复制,子进程会复制父进程的代码,但是从fork下开始执行。但是,当在fork前定义父子进程都用到的变量的时候,这时候父子进程并不是同时操作这个变量,而是相互独立的,也就是说:子进程指定自己的n,不会在父进程的n的基础上操作。

5.getpid/getppid

A依赖的头文件

#include <unistd.h>

#include<sys/types.h>

B函数声明

uid_t getuid(void); //返回实际用户ID

uid_t geteuid(void); //返回有效用户ID

C:案例说明

6.getuid()函数

A依赖的头文件

#include <unistd.h>

#include <sys/types.h>

B函数声明

uid_t getuid(void); //获得用户id

uid_t geteuid(void); //获得有效的用户id

函数说明:

通过getuid()函数和geteuid()函数获得用户的id

案例说明:

运行结果:

7.getgid()函数

A:依赖的头文件

#include <unistd.h>

#include <sys/types.h>

B函数声明

gid_t getgid(void);

gid_t getegid(void);

函数说明:

通过这个函数实现获得组的id

C案例说明:

运行结果:

vfork

用于fork后马上调用exec函数

父子进程,公用同一地址空间,子进程如果没有马上exec而是修改了父进程得到的变量值,此修改会在父进程中生效

设计初衷,提高系统效率,减少不必要的开销

现在fork已经具备读时共享写时复制机制,vfork逐渐废弃。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。