随笔 - 49  文章 - 0  评论 - 48  阅读 - 8205

2017-2018-1 20155220 《信息安全系统设计基础》第四周学习总结

2017-2018-1 20155220 《信息安全系统设计基础》第四周学习总结

系统调用

read系统调用

  • read函数的原型为:
size_t read(int fildes, void *buf, size_t nbytes);
  • read函数的头文件:
#include<unistd.h>

open系统调用

  • open函数的原型为:
int open(const char *filename, int flags); 
int open(const char *filename, int flags, mode_t mode); 
  • open函数的头文件有:
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
  • read系统调用的作用是从与文件描述符相关的文件里读入nbytes个字节的数据,并把它们放到数据区buf中,返回读入的字节数,失败时返回-1。

close系统调用

  • close调用的函数原型为:
int close(int fildes);
  • close函数的头文件:
#include <unistd.h>
  • close函数的作用是终于文件描述符fildes一其对应的文件之间的关联。

myhead

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <fcntl.h>
#include <unistd.h>
void myhead(char *filename,int n)
{

    int count=0;
    char ch;
    int fd=0;
    fd=open(filename,O_RDONLY,0);
    while(read(fd,&ch,1)!=0)
    {
        putchar(ch); 
        if(ch=='\n'){count++;}
        if(count==n){break;}
    }
}

mytail

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <fcntl.h>
#include <unistd.h>
void mytail(char *filename,int n)
{

    int count=0,count1=0;
    char ch;
    int fd=0;
    fd=open(filename,O_RDONLY,0);
    while(read(fd,&ch,1)!=0)
    {
        if(ch=='\n'){count++;}
    }
    close(filename);
    fd=open(filename,O_RDONLY,0);
    while(read(fd,&ch,1)!=0)
    {
        if(count1>=(count-n-1)){putchar(ch);}
        if(ch=='\n'){count1++;}
    }
    close(filename);
}

学习过程遇到的问题

  • 在实现mytail过程中,出现了输出行数少一行。
  • 解决:if(count1>=(count-n)){putchar(ch)改为
    if(count1>=(count-n-1)){putchar(ch)
posted on   20155220吴思其  阅读(145)  评论(5编辑  收藏  举报
编辑推荐:
· 聊一聊 操作系统蓝屏 c0000102 的故障分析
· SQL Server 内存占用高分析
· .NET Core GC计划阶段(plan_phase)底层原理浅谈
· .NET开发智能桌面机器人:用.NET IoT库编写驱动控制两个屏幕
· 用纯.NET开发并制作一个智能桌面机器人:从.NET IoT入门开始
阅读排行:
· 我干了两个月的大项目,开源了!
· 推荐一款非常好用的在线 SSH 管理工具
· 聊一聊 操作系统蓝屏 c0000102 的故障分析
· 千万级的大表,如何做性能调优?
· .NET周刊【1月第1期 2025-01-05】
< 2025年1月 >
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
2 3 4 5 6 7 8

点击右上角即可分享
微信分享提示