Linux编程实践Day1

从三个方面理解系统编程

  1. 分析程序,了解功能
  2. 学习系统调用
  3. 自己编程实现

文件操作的相关命令

  1. cat,more,less,pg – 查看文件的内容
    其中,对于more命令,显式一屏后会暂停输出,按空格,more会继续输出下一屏,按回车,会显式下一行,按q则立刻退出
  2. Unix并不提供恢复被删除文件的功能,其中一个原因是Unix是多用户系统,当一个文件被删掉以后,其所占用的存储空间可能立即被分配给其他用户
  3. lpr – 打印文件
  4. 文件权限通过ls -l命令查看

more命令实现

目前尚未解决用户输入空格或q后必须按回车的问题

#include<stdio.h>
#define PAGELEN 24
#define LINELEN 512
int ReplyMore(FILE *keyboard){
    printf("\033[7m more? \033[m");
    int ch;
    while((ch=getc(keyboard)) != EOF){
        if(ch == 'q')
            return 0;
        else if(ch == ' ')
            return PAGELEN;
        else if(ch == '\n')
            return 1;
    }
    return 0;
}
void DoMore(FILE *fp){
    char line[LINELEN];
    int num_of_lines = 0;
    int reply;
    FILE *fp_tty = fopen("/dev/tty","r"); // 此文件为键盘和显示器的设备描述文件
    while(fgets(line, LINELEN, fp)){
        if(num_of_lines == PAGELEN){
            reply = ReplyMore(fp_tty);
            if(reply == 0)
                break;
            num_of_lines -= reply;
        }
        if(fputs(line, stdout) == EOF)
            exit(1);
        num_of_lines++;
    }
}
int main(int argc, char *argv[]){
    FILE *fp;
    if(argc == 1)
        DoMore(stdin);
    else{
        while(--argc){
            if((fp = fopen(*++argv,"r")) != NULL){
                DoMore(fp);
                fclose(fp);
            }
            else{
                exit(1);
            }
        }
    }
    return 0;
}

结果如下图:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值