Linux文件 *** 作应用cp指令的实现

Linux文件 *** 作应用cp指令的实现,第1张

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录
  • 前言
  • 一、Linux文件编程常用API
  • 二、编程思路及代码示例
    • 1.编程思路
    • 2.代码示例
  • 总结


前言

提示:这里可以添加本文要记录的大概内容:

通过用C/C++在Linux系统下实现cp指令,来学习熟悉Linux文件编程的常用API。


提示:以下是本篇文章正文内容,下面案例可供参考

一、Linux文件编程常用API

文件的打开与创建

//代码示例
#include 
#include 
#include 
int main()
{
    int fd;
    fd=open("./file1",O_RDWR);//第一个参数是文件名,第二个是 *** 作权限
    if(fd==-1){//如果fd(文件描述符)为负数则文件打开失败,重新创建一个
      fd=open("./file1",O_RDWR|O_CREAT,0600);/*第二个参数多加了O_CREAT是
      创建文件的意思,(0600)表示用户对此文件的(可读可写) *** 作权限*/
      printf("creat file1 success!\n");
      }
}

文件的写入

//代码示例
#include 
int main()
{
   char *buf="hello world!";
   int fd=open("./file1",O_RDWR);
   int n_write=write(fd,buf,strlen(buf));/*第一个参数是fd(文件描述符),
   第二个是写入的字符串,第三个参数字符串的长度*/
   close(fd);//关闭文件
}

文件内容的读取

#include 
int main()
{
    char *buf="hello world!";
    int fd=open("./file1",O_RDWR);
	int n_write=write(fd,buf,strlen(buf));//n_write为写入文件的字符个数
    char *readbuf=(char*)malloc(sizeof(char)*n_write+1);/*定义一个指针,
    并为其开辟n_write+1个空间*/
    int n_read=read(fd,readbuf,n_write);//将文件里的内容读取到readbuf中
    close(fd);
}

文件光标的移动

#include 
#include 
 off_t lseek(int fd, off_t offset, int whence);/*第一个参数fd(文件描述符)
 ,第二个光标在字符串中的位移量,正数向左负数向右*/
 /*
        注:
       whence(当前位置,第三个参数):
       SEEK_SET  文件头
       SEEK_CUR  当前位置
       SEEK_END  文件尾
 */

二、编程思路及代码示例 1.编程思路

1、打开src.c(源文件)
2、读取源文件中的信息到buf(存放内容的地址)
3、打开或创建des.c(目标文件)
4、将buf写入到des.c中
5、close两个文件

2.代码示例

代码如下:

#include 
#include 
#include 
#include 
#include 
#include 
#include 
 
int main(int argc , char **argv)
{
        int fdSrc;
        int fdDes;
        char *readBuf = NULL;
        if(argc != 3){						
                printf("param error!\n");
                exit(-1);
        }
        fdSrc = open(argv[1],O_RDWR);		
        int size = lseek(fdSrc,0,SEEK_END);	
		lseek(fdSrc,0,SEEK_SET);					
        readBuf = (char *)malloc(sizeof(char)*size + 8);	
        int n_read = read(fdSrc,readBuf,1024);				
        fdDes = open(argv[2],O_RDWR|O_CREAT,0600);			
        int n_write = write(fdDes,readBuf,strlen(readBuf));
        close(fdSrc);	
        close(fdDes);
        return 0;
}
 

总结

通过实现简单的CP指令从而熟悉Linux文件编程常用的API

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/725614.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-26
下一篇 2022-04-26

发表评论

登录后才能评论

评论列表(0条)

保存