【无标题】

发布时间:2023年12月25日

公示栏案例引入

请添加图片描述

a同学写完“数学课”后出去接电话,b同学进来写了“英语课考试”,a同学后来又进来,写了“取消”,从而导致其他的同学看了产生歧义。

程序逻辑设计:

请添加图片描述

代码

student1.c



#include <fcntl.h>
#include<unistd.h>
void main(){
        int fd = 0;

        fd = open("./board.txt",O_RDWR|O_APPEND);
        /*写入 “数学课” */
        write(fd,"class math ",11);
        sleep(10);
        /* 写入“取消”  */
        close(fd);
}
~                                                                                                                                   
~                                                                                                                                   
~                                                                                                                                   
~                                                                                                                                   
~           

student2.c



#include<sys/types.h>
#include<sys/stat.h>
#include<unistd.h>
#include<fcntl.h>

void main(){
        int fd = 0;
        fd = open("./board.txt",O_RDWR|O_APPEND);
        /*  写入"英语课考试"   */
        write(fd,"enlish exam ",20);
        close(fd);
}
~                                                                                                                                   
~       

运行结果:
请添加图片描述

什么是信号量:

请添加图片描述
叙述一下:a进程 想操作文件前,先看 “标志” 是否为1,如果为1,则可以操作文件,如果 “标志” 为0,则等待…

这个标志 其实就是 信号量

信号量的实质:就是一个数字
图示中:获取 就是 减法 操作释放就是加法操作

信号量的概念:

请添加图片描述

信号量的分类:

请添加图片描述

比如数值的初始值为2则为 计数信号量

创建/打开信号量 函数

信号量操作 和文件 类比

请添加图片描述

文章来源:https://blog.csdn.net/QQ1402369668/article/details/135193004
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。