《UNIX系统编程》第三章 笔记
1、进程标识
UNIX用惟一的被称为进程ID的整数值来标识进程。
每个进程还有一个父进程ID,这个父进程ID最初是创建它的那个进程的进程ID。
如果这个父进程终止,进程就由一个系统进程收养,这样父进程ID就总是标识着一个有效的进程。
getpid和getppid函数分别返回进程ID和父进程ID。pid_t是用来表示进程ID的一个无符号整数类型
#include <unistd.h>
pid_t getpid(void);
pid_t getppid(void);
UNIX进程有几个向进程传递权限的用户ID和组ID。真实用户ID、真实组ID、有效用户ID、有效组ID
通过将进程的有效用户ID设置为这个普通用户的ID,进程就能创建“好像是”那个用户创建的文件了。
#include <unistd.h>
gid_t getegid(void); 获取有效用户ID
uid_t geteuid(void);
git_t getgid(void);
uid_t getuid(void); 获取真实用户ID
2、进程状态
新建(new) 正在创建
运行(running) 正在执行指令
阻塞(blocked) 等待像IO这样的事件
就绪(ready) 等待分配处理器
完成(done) 结束
3、进程创建与fork
fork创建新的进程,调用进程就成为父进程,被创建的进程就被称为子进程。
fork函数拷贝了父进程的内存映像,这样新进程就会收到父进程地址空间的一份拷贝。
二个进程在fork语句后,都继续执行后面的指令。
#include <unistd.h>
pid_t fork(void);
fork函数的返回值是允许父进程和子进程区别自己并执行不同的代码的关键特征。
fork函数向子进程返回0,并将子进程的进程ID返回给父进程。
fork失败,返回-1并设置errno
进程链
processchain.c
#include <stdio.h>
#include <unistd.h>
int main(int argc, char **argv) {
int x;
x=0;
fork();
x = 1;
printf("i am process %ld and my x is %d\n",(long)getpid(),x);
return 0;
}
|
创建进程后,有二个独立的进程在执行,每个都有自己的x变量拷贝。由于父进程和子进程的执行是相互独立的,所以它们不会按照锁步(lock setp)来执行代码 ,也不会修改相同的内存单元。每个进程都打印出带有各自进程ID和x值的消息。
4、wait
相关推荐
笔记_UNIX环境网络编程卷二进程间通信_中文第二版
第一章UNIX操作系统概述 1983年AT&T发布UNIX System V,系统功能已经趋于稳定和完善,现在最后版本为System V Release 4 代表性UNIX版本: 1.System V Release 4 (SVRV) 小型机上、大型机上使用。 2.加州大学...
UNIX 网络编程卷 2 进程间通信读书笔记(一)
14.SCO UNIX5的几个主要系统进程 15.SCO UNIX5 的动态核心表 16.进程管理的两个命令(PS,Sar) 评论 17.进程管理的两个命令(PS,Sar) 18.性能相关的几个核心参数(CPU,I/O,MEMORY) 19.SCO NFS详解 20.SCO命令--df 21....
Unix环境高级编程笔记I/O文件系统进程线程进程间通信一.文件I/O三.标准I/O库八.高级I/O二.文件和目录四.进程环境五.进程控制六.线程七.线程控制九
①UNIX体系结构中,最主要的是内核,它有一些称为系统调用的接口与外界交互。在内核之上有shell 和库函数,然后是应用软件。 ②常见的shell有Bourne shell(sh), Bourne_again shell(bash), C shell(csh), Korn shell...
IX 只能够用于单一的 Unix 系统进程间通信,而 AF_INET 是针对Internet的,因而可以允许在 远程 主机之间通信(当我们 man socket 时发现 domain 可选项是 PF_*而不是AF_*,因为 glibc 是 posix 的实现 所以用 PF代替...
如果你想要成为一名合格的Linux管理员linux学习书籍,那么必须要学习一些基础知识和技能。...该书主要介绍Unix环境下高级编程的相关知识,如进程控制、信号处理、文件IO等。 3.《深入理解Linux内核》
包括概述、linux文件系统、正则表达式、sed命令和awk编程、文件的排序、合并和分割、变量和引用、操作符、循环与结构化命令、变量的该机用法、I/O重定向、linux/unix shell类型与区别、子shell进程处理、函数、别名...
这是我学习Unix(主要是linux)系统编程与网络编程的笔记,附上部分源码 系统编程 进程 创建fork 执行exec 销毁wait/waitpid(SIGCHLD) 进程间通信: 匿名管道pipe,命名管道(FIFO)mkfifo System V IPC(还有一组POSIX...
以原书的1-16章为主,包括基本概念、POSIX诸标准、文件、信号、线程、进程间通信等。 参考了一些其它资料结合个人分析,对书中的知识点、重点、难点疑点进行了部分补充。 原连载于 ...
这是本人学习期间整理的关于进程间通信的笔记,和一些代码