码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2014-09-16 23:43:01      阅读:295      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   ar   for   文件   2014   div   sp   



1fork()函数

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

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

B:子进程中返回0

C:读时共享,写时复制

2fork()依赖的头文件

#include <unistd.h>

3fork()函数说明:

pid_tfork(void);                           

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

4案例说明:

bubuko.com,布布扣

bubuko.com,布布扣

总结:

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:案例说明

bubuko.com,布布扣

bubuko.com,布布扣

6.getuid()函数

A依赖的头文件

#include <unistd.h>

#include <sys/types.h>

B函数声明

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

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

函数说明:

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

案例说明:

bubuko.com,布布扣

运行结果:

bubuko.com,布布扣

7.getgid()函数

A:依赖的头文件

#include <unistd.h>

#include <sys/types.h>

B函数声明

gid_t getgid(void);

gid_t getegid(void);

函数说明:

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

C案例说明:

bubuko.com,布布扣

运行结果:

 bubuko.com,布布扣

vfork

   用于fork后马上调用exec函数

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

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

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

 

 

 

 

 

 

 

 

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

标签:style   blog   http   ar   for   文件   2014   div   sp   

原文地址:http://blog.csdn.net/tototuzuoquan/article/details/39326315

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!