• 作业-11.14


    1、实现LINUX终端CAT的效果

    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include

    char str = 0;
    int fd = 0;
    sem_t sem1;
    sem_t sem2;
    ssize_t res;

    void* handler1(void* arg)
    {
        while(1)
        {
            str = 0;
            res = read(fd, &str, 1);
            if(0 == res)
            {
                break;
            }
            sem_wait(&sem1);
            sem_post(&sem2);
        }
        pthread_exit(NULL);
    }
    void* handler2(void* arg)
    {
        while(1)
        {
            if(0 == res)
            {
                break;
            }
            sem_wait(&sem2);
            //printf("%c", str);
            //str = 0;
            write(1, &str,1);
            sem_post(&sem1);
        }
        pthread_exit(NULL);
    }

    int main(int argc, const char *argv[])
    {
        if(argc != 2)
        {
            fprintf(stderr, "./a.out \n");
            return -1;
        }
        fd = open(argv[1], O_RDONLY);
        if(sem_init(&sem1, 0, 1) < 0)
        {
            perror("sem_init");
            return -1;
        }
        if(sem_init(&sem2, 0, 0) < 0)
        {
            perror("sem_init");
            return -1;
        }
        pthread_t tid1, tid2;
        if(pthread_create(&tid1, NULL, handler1, NULL) != 0)
        {
            perror("pthread_create");
            return -1;
        }
        if(pthread_create(&tid2, NULL, handler2, NULL) != 0)
        {
            perror("pthread_create");
            return -1;
        }
        pthread_join(tid1, NULL);
        pthread_join(tid2, NULL);


        sem_destroy(&sem1);
        sem_destroy(&sem2);


        return 0;
    }

  • 相关阅读:
    English语法_名词性从句 - what
    AS86汇编语法
    代码随想录算法训练营第一天 | 704. 二分查找、27. 移除元素
    sql中常用到的正则表达
    Spring核心系列——多yaml数据读取,@Value day1-1
    WebSocket介绍及部署
    深入WPF–Style
    1.1. Java简介与安装
    看完这篇 教你玩转渗透测试靶机vulnhub——FunBox11(Scriptkiddie)
    【面试经典150 | 区间】合并区间
  • 原文地址:https://blog.csdn.net/MisakaMikotto/article/details/127855757