linux学习读书笔记333上传
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第4天(进程通讯)-1(进程间通讯概述)、
1、进程间通信:数据传输、资源共享、通知事件、进程控制
2、发展:UNIX进程通信—
3、Posix可移植操作系统接口,,利用在移植中
4、Syetem v :UNIX中的一个分区
5、分类:1、管道2、信号3、信号队列4、共享内存5信号量6套接字
第4天(进程通讯)-2(管道通讯)
1、管道通信:单向的、先进先出
无名管道(用于父子进程):int pipe (int filedis[2]);filedis[0]用于读管道;filedis[1]写管道
有名管道(任意进程):创建int mkfifo(const char*pathname文件名,mode_t mode属性)
操作:图6-4
关闭管道close
管道通信例子见图6-1
//fd为整型
Pipe_rw.c例子图6-2;6-3
Fifo_write.c 图6-5和fifo_read.c图6-6利用fifo通信
第4天(进程通讯)-3(信号通讯)
1、信号通信
用函数产生信号killed命令产生
信号类型见图6-7
常见信号见图6-7、
信号处理:1、忽略此信号(sigkill和sigstop不能忽略)
2、执行用户希望的动作
3、执行系统默认动作(大多数默认是终止该信号)int kill()
信号发送:kill可以给我i自己发,raise只能给自身发int raise()
Alarm函数:在未来一个时间(在参数中设置)产生sigalarm
Pause使进程等待知道收到信号
信号处理:signal函数void(*signal(int signo,void(*func)(int )))(int)
如何理解上段程序例子见图6-9
//My signal kill sigstop tss kill-si have get a fuck
第4天(进程通讯)-4(共享内存通讯)
1、共享内存:把物理内存共享出一部分,供进程写入
共享内存步骤:1、创建shmget2/映射共享内存
创建int shmget()
*映射int shmat()参数:标识符、flag
接触映射int shmdt()例子见图7-1
第5天(进程通讯)-1(消息队列)
1、进程间通信程序设计:
消息队列(管道只能传递无格式队列,消息队列可以克服这个问题)
发展:消息队列就是=一个消息的链表,具有特定格式
分类:POSIX消息队列;V消息队列
持续性:重启内核才能消除
键值:消息队列对应唯一的键值
读键值key_t ftok()返回文件名对应键值(文件名,项目名不为零即可)
打开/创建:int msgget(键值,标志位)返回值键值描绘
IPC_CREAT创建新的消息队列
IPC_EXCL与IPC_CREAT一同使用,表示如果要创建的消息队列已经存在返回错误IPC_NOWAIT读写消息队列要求无法得到满足时,不阻塞
什么情况可以建立新的消息队列:1、假如没有与键值相对应消息队列
2、key参数为IPC_PRIVATE
创建消息队列例子:例子见图8-1
发送消息:int msgsnd(int msqid,struct msgbuf....)图8-2
消息格式:struct msgbuf{long mtype;
Char mtext[1]]}
接收消息:int msgtcv()从msqid代表中读取一个msgtyp类型消息例子见图8-3 实例图8-4(min32~40)
第5天(进程通讯)-2(信号量)
1、信息量:又名信号灯。主要用途是保护临界资源。进程根据他判断是否访问共享资源(忙标志位只有0和1)
2、创建/打开:int semget(键值,nsems制定打开的信号灯数目,)
3、操作:int semop(int semid信号量集的ID,struct sembuf*sops是一个操作数组,表明要进行什么操作,unsigned nsops sops所指向数组的元素数量)
4、操作:struct sembuf{}(min13~)
线程的优点:比进程节俭(进程需要地理地址空间,进程开销大其30倍)多线程:遵循POSIX
例子第1天(编程基础)-3(makefile工程管理)
wen
GNU make 构建和管理自己的文件工程
统一管理
需要一个Makefile的文件
Make 文件规则
Makefile例子,见图1-1
Hello : main.o func1.o func2.0
Makefile术语:targets:prerequisites commanf目标依赖命令
例子:main.o: main.c gcc-c main.c
文件名:make在默认情况会自动寻找makefile文件
伪目标:没有任何依赖只有动作的目标
变量:添加变量两种方法,例子图1-2
默认变量:见图1-3
杂项:1注释#
// make vi makefile rm hello}
第2天(文件编程)-1(系统调用方式访问文件)系统调用:1、创建intcreat ,filename
Filename
Mode
可执行1
可写2
可读4
例子:见图2-1程序
//gcc file_creat –o file_creat
文件描述所有文件都对应一个文件描述符
可执行1
可写2
可读4
系统调用—打开:pathname:要打开的文件名
Flags打开标志:例如:O_CREATE
实例分析:见图2-2程序
//rm file open.c gcc open.c
//分析程序
系统调用关闭:fd:文件描述符
系统调用读int read (int fd,const void *buf,)
系统调用写int write ()
系统调用定位int iseek (int fd ,offset_t offset .int whence)
{}
Seek_set开头
Seek_cur中间
Seek_end末尾哦
系统调用访问判断:int access()
例子file_cp.c