要求:
1.能够记录学员的相关信息。
2.所有学员的信息由守护进程保存。
3.终端程序负责读取用户的输入命令。
1)将用户输入的学员信息发送给守护进程,由守护进行保存。
2)能够输入学员编号查找到学员信息,如果没有此学员需要显示无此学员信息。
记录内容(100个):
1.学员编号
2.姓名(20字节)
3.成绩
共享内存段的数据组织形式:
1.1个字节的请求类型:type
2.1个字节的返回结果:res
3.学员信息(28个字节)。info
c到d的添加学员信息的情况:
1.将sem1的value做-1操作。
2.type设置为0.
3.向info写入学员信息。
4.将sem2的value做+1。
5.将sem3的vlaue做-1。
6.读取res。
7.将sem1的value做+1。
8.打印是否成功,以及原因。
c到d的查找学员信息的情况:
1.将sem1的value做-1操作。
2.type设置为1.
3.向info的学员学号写入用户输入的学员的学号。
4.将sem2的value做+1。
5.将sem3的vlaue做-1。
6.读取res,如果res是3,则读取info。如果res是2,则认为学员查找失败。
7.将sem1的value做+1。
8.打印学员结果。
d所做任务:
1.创建共享内存(30字节)与信号量。
2.循环:
1)将sem2的value做-1.
2)读取type数值。
3)判断用户操作并做相应操作(含操作info)。
4)将sem3的value做+1.
判断用户操作并做相应操作(含操作info)。
1.读取type数值。
2.如果type是0,则读取info的所有信息并添加至自己的数组中,并根据结果操作做res。
3.如果type是1,则读取info中的学号,跟自身数组的学号进行对比。
1)如果找出对应的数据,将其拷贝到info中,在res中写入3。
2)如果没有找出对应的数据,则在res中写入2。