实验 7 共享内存和信号量(进程间通信)邢卫 2008-11-26 修订实验目的学习并掌握 Linux 系统中的进程间通信机制,包括共享内存和信号量
学习共享内存相关的系统调用shmget(), shmat(), shmdt, shmctl()2
学习信号量(semaphore)相关的系统调用semget(), semop(), semctl()3
学习信号(signal)相关的系统调用signal(), atexit()等4
完成《边干边学》第 6
1 节的实验程序的编辑、编译、运行操作5
分析、学习实验程序的工作过程和原理6
选做:学习《边干边学》第 6 章,结合使用联机手册(可以从 man 2 ipc 命令开始),编程练习各种进程间通信机制实验步骤1.以 stu 帐号登录2.编辑 reader_writer1
c 程序注意:在 193 页 delete()函数中,注意改成if (mysemctl(Semid, 0, IPC_RMID, (union semun)0) == -1) {限于实验的时间,该文件已预先存放在/home/stu/
kernel/lab6 目录下,可以直接使用
但每位同学务必通读并理解该程序
登录后,使用 cd
kernel/lab6 命令进入该文件所在目录,继续以下实验步骤
3.编译 gcc reader_writer1
c -o reader_writer14.运行
/reader_writer1注意记录下共享内存的 id 号5.使用 Alt+F2 切换到第 2 个登录窗口,再次以 stu 帐号登录可以使用 who 命令查看验证此时有两个 stu 用户已登录可以使用 ps –l 命令查看这两个 stu 用户的进程6.在第 2 个 stu 用户窗口中,输入
/reader_writer1 共享内存的 id 号注意:此时