李林APUE之进程的封装】的更多相关文章

1.子进程是父进程的副本,获得父进程的数据空间/堆/栈,父子进程共享代码段.子进程从fork后開始运行.返回值=0表示子进程,由于子进程能够通过函数来获取父进程的ID,可是父进程无法知道子进程的ID. 2.为了提交效率,fork后,并不立马复制父进程的空间,而是採取写时复制(COW)的技术.也就是父进程或者子进程要改动数据段/堆/栈的时候,才进行复制操作,而且复制改动的区域. 3.子进程从父进程那里复制过来的文件描写叙述符,和父进程指向同一个文件对象,即共享了文件偏移量/标志等. 4.加不加-l…
. . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编程 (APUE) 之 文件和目录 (四) 一起学 Unix 环境高级编程 (APUE) 之 系统数据文件和信息 (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境 (六) 一起学 Unix 环境高级编程 (APUE) 之 进程控制 (七) 一起学 Unix 环境高级编程 (APUE)…
. . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编程 (APUE) 之 文件和目录 (四) 一起学 Unix 环境高级编程 (APUE) 之 系统数据文件和信息 (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境 (六) 一起学 Unix 环境高级编程 (APUE) 之 进程控制 (七) 一起学 Unix 环境高级编程 (APUE)…
. . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编程 (APUE) 之 文件和目录 (四) 一起学 Unix 环境高级编程 (APUE) 之 系统数据文件和信息 (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境 (六) 一起学 Unix 环境高级编程 (APUE) 之 进程控制 (七) 一起学 Unix 环境高级编程 (APUE)…
一.共享库 共享库使得可执行文件中不再需要包含常用的库函数,而只需在所有进程都可存取的存储区中保存这种库例程的一个副本.程序第一次执行的时候或第一次调用某个库函数的时候,用动态链接方法将程序与共享库函数相链接,这减少了每个可执行文件的长度,但增加了一些运行时间开销.另一个优点就是可以用库函数的新版本来替换老版本而无需对该库的程序重新链接编译. 不同的系统使用不同的方法说明程序是否需要使用共享库.比较典型的有cc和ld命令的可选项. 二. 存储器分配 ANSI C说明了三个存储空间动态分配的函数(…
一. 前言 本章将学习:当执行程序时,其main函数是如何被调用的,命令行参数是如何传送给执行程序的,典型的存储器布局是什么样式,如何分配另外的存储空间,进程如何使用环境变量,进程终止的不同方式等.另外还将说明longjmp和setjmp函数以及它们与栈的交互作用. 二. main函数 C程序的入口是main函数,main函数的原型是: int main(int argc, char argv[]); 当内核启动C程序时(使用一个exec函数),在调用main前先调用一个特殊的启动例程.可执行程…
[a] getpgid / setpgid #include <unistd.h> pid_t getpgid(pid_t pid) //成功返回进程组 ID,出错返回 -1 int setpgid(pid_t pid, pid_t pgid) //成功返回0,出错返回 -1  setpgid 用于改变指定进程的进程组或创建新的进程组 若 pid 为 0,则将调用进程自身转移到指定进程组 若 pgid 为 0,则以 pid 为首进程创建新的进程组 若二者同时为 0,即以调用进程自身为首进程创建…
[a] getpid / getppid / getuid / geteuid / getgid / getegid #include <unistd.h> pid_t getpid(void) pid_t getppid(void) uid_t getuid(void) uid_t geteuid(void) gid_t getgid(void) gid_t getegid(void)  获取当前进程的进程id.父进程id.实际用户id.有效用户id.实际组id.有效组id [b] fork…
[a] exit / _Exit / _exit #include <stdlib.h> void exit(int status) void _Exit(int status) #include <unistd.h> void _exit(int status)  exit 在终止进程之前会调用 fflush 及 fclose 类 UNIX 平台上,_Exit 与 _exit 相同,直接终止进程而不做清理工作 [b] atexit #include <stdlib.h>…
进程组(process group) 进程组顾名思义是指一个或多个进程的集合.他们通常与同一个job(可以从同一个终端接收信号)相关联.每个进程组拥有一个唯一的Process Group Id.可以使用getpgrp或getpgid获取进程的Process Group Id: #include <unistd.h> /* 返回调用进程的进程组Id */ pid_t getpgrp(void); /* 若pid为0,作用与getpgrp相同 */ pid_t getpgid(pid_t pid)…