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=='
'){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=='
'){count++;}
    }
    close(filename);
    fd=open(filename,O_RDONLY,0);
    while(read(fd,&ch,1)!=0)
    {
        if(count1>=(count-n-1)){putchar(ch);}
        if(ch=='
'){count1++;}
    }
    close(filename);
}

学习过程遇到的问题

  • 在实现mytail过程中,出现了输出行数少一行。
  • 解决:if(count1>=(count-n)){putchar(ch)改为
    if(count1>=(count-n-1)){putchar(ch)
原文地址:https://www.cnblogs.com/20155220wsq/p/7673753.html