linux学习读书笔记333上传

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档