本文最后更新于 584 天前,其中的信息可能已经有所发展或是发生改变。
编写C程序,使用Linux中的IPC机制,完成 “石头、剪子、布”的游戏。
- 可以创建三个进程:一个进程为裁判进程,另外两个进程为选手进程。可将“石头、剪子、布”这三招定义为三个整型值,胜负关系为:石头>剪子>布>石头。
- 选手进程按照某种策略(例如,随机产生)出招,交给裁判进程判断大小。裁判进程将对手的出招和胜负结果通知选手。比赛可以采取多盘(如100盘)定胜负,由裁判宣布最后结果。每次出招由裁判限定时间,超时判负。
- 每盘结果可以存放在文件或其他数据结构中。比赛结束,可以打印每盘的胜负情况和总的结果。
编写程序,使用Linux操作系统中的信号量机制模拟实现生产者-消费者问题。设有一个生产者和一个消费者,缓冲区可以存放产品,生产者不断生成产品放入缓冲区,消费者不断从缓冲区中取出产品,消费产品。
- 示例代码设计:
- 使用两个线程来模拟生产者和消费者
- 使用pthread库提供的线程操作,需要包含头文件pthread.h
- 使用POSIX的无名信号量机制,需要包含头文件semaphore.h
System V信号量和POSIX信号量的区别:https://blog.csdn.net/luren2015/article/details/107739149
Linux c语言 socket编程相关资料:
- https://zhuanlan.zhihu.com/p/159453129
- http://c.biancheng.net/view/2128.html
- https://blog.csdn.net/EmilyHoward/article/details/80061400
石头剪刀布用socket做,生产者-消费者模拟用无名信号量做就行了。
编译时应该加上-lpthread
参数