linux实验报告四 1、用系统调用函数编写一个C程序mycat.c,实现类似cat命令的功能,例如:./mycat file.txt,则显示file.txt的内容,其中./mycat是该C程序经过编

  • 实验任务
  1. 用系统调用函数编写一个C程序mycat.c,实现类似cat命令的功能,例如:./mycat file.txt,则显示file.txt的内容,其中./mycat是该C程序经过编译后的可执行文件。

2、用系统调用函数编写一个C程序,将某个命令的输出储存到文件out.txt中。例如输入ls –l | ./output将ls –l的输出储存到out.txt中,其中./output是该C程序经过编译后的可执行文件。

  • 实验步骤和结果

1、用系统调用函数编写一个C程序mycat.c,实现类似cat命令的功能,例如:./mycat file.txt,则显示file.txt的内容,其中./mycat是该C程序经过编译后的可执行文件。

//c语言代码:

#include<stdio.h>

#include<stdlib.h>

#include<sys/stat.h>

#include<unistd.h>

#include<sys/types.h>

#include<fcntl.h>



int main(int argc,char *argv[]){

        struct stat st;

        int fsize;

        int fd;

        char *buffer;



        if(argc!=2){

                printf("Error:parameter wrong!\n");

                exit(0);

        }



        fd=open(argv[1],O_RDONLY);

        if(fd<0){

                printf("Error:open file wrong!\n");

                exit(0);

        }



        stat(argv[1],&st);

        fsize=st.st_size;

        buffer=(char*)malloc((1+fsize)*sizeof(char));



        if(!buffer){

                printf("Error:memory wrong!\n");

                exit(0);

        }



        read(fd,buffer,fsize);

        write(1,buffer,fsize);



        close(fd);

        return 0;

}

运行结果:

 

  1. 编写一个shell脚本,传递一个参数表示目录名,删除给定的某目录下所有内容为空的.c文件,并列出被删的文件名。

//C语言代码:

#include<stdio.h>   

#include<string.h>   

#include<sys/stat.h>

#include<fcntl.h>

#include<unistd.h>

int main(){

char buf[1024];

int n;

int fd =open("out.txt",O_WRONLY|O_CREAT,S_IRUSR|S_IWUSR);

while((n=read(0,buf,sizeof(buf)))>0)

write(fd,buf,n);

return 0;

}

运行结果:

 

 

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

huaaay

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值