zoukankan      html  css  js  c++  java
  • 2018-2019-1 20165218 实验三 实时系统

    2018-2019-1 20165218 实验三 实时系统

    实验任务

    • 学习使用Linux命令wc
    • 基于Linux Socket程序设计实现wc(1)服务器(端口号是你学号的后6位)和客户端,客户端传一个文本文件给服务器,服务器返加文本文件中的单词数
    • 使用多线程实现wc服务器并使用同步互斥机制保证计数正确

    实验内容

    一、学习wc

    • Linux系统中的wc(Word Count)命令功能是统计指定文件中的字节数、字数、行数,并将统计结果显示输出

    • 命令格式: wc (-参数) 文件

    • 参数一览

    参数 功能
    -c 统计字节数
    -l r统计行数
    -m 统计字符数(不能与-c连用)
    -w 统计字数
    -L 打印最长行的长度
    --help 显示帮助信息
    --version 现实版本信息


    二、服务器实现wc命令


    三、多线程实现wc服务器

    信号量
    • 信号量本质上是一个非负数的整数计数器,它也被用来控制对公共资源的访问。当公共资源增加的时候,调用信号量增加函数sem_post()对其进行增加,当公共资源减少的时候,调用函数sem_wait()来减少信号量。
    • 定义在/usr/include/semaphore.h,调用之前需要引入头文件#include <semaphore.h>
    • 初始化:int sem_init(sem_t *sem, int pshared, unsigned int value); 成功返回值为0,否则-1
    • sem:指向信号量结构的指针
    • psharedpshared!=0,信号量在进程间共享;pshared==0,只能为当前进程的所有线程们共享
    • value:信号量的初始值
      • int sem_wait(sem_t *sem);信号量减1
      • int sem_post(sem_t *sem);信号量加1
      • int sem_destroy(sem_t *sem);销毁信号量
      • 以上函数成功返回0,失败-1
    分析
    • 单线程只允许一个客户端连接,较为简单;多线程允许多个,更复杂,效率更高
    • 单线程保证了安全性,多线程保证高效性

    代码托管


    参考资料

    linux中wc命令用法

  • 相关阅读:
    34. Find First and Last Position of Element in Sorted Array
    42. Trapping Rain Water
    HDU-2952 Counting Sheep (DFS)
    HDU-1518 Square(DFS)
    HDU-1253 胜利大逃亡 (BFS)
    HDU-1026 Ignatius and the Princess I (BFS)
    最小生成树之Prim算法,Kruskal算法
    HDU-1495 非常可乐(BFS)
    strncpy 用法
    字符串函数总结
  • 原文地址:https://www.cnblogs.com/zicerain/p/9978541.html
Copyright © 2011-2022 走看看