linux下使用系统调用编程实现copy命令功能

原创 2004年09月09日 12:52:00

很简单的一个例子,演示了linux的一些对于文件操作的系统调用,并且演示了一个copy文件的经典算法

程序是从http://www.fanqiang.com/网站上摘录,那里有很多好文章

#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <errno.h>
#include <string.h>

 

#define BUFFER_SIZE 1024

int main(int argc,char **argv)
{
 
 int from_fd,to_fd;
 int bytes_read,bytes_write;
 char buffer[BUFFER_SIZE];
 char *ptr;

 if(argc!=3)
  {
fprintf(stderr,"Usage:%s fromfile tofile/n/a",argv[0]);
exit(1);
  } 

 if((from_fd=open(argv[1],O_RDONLY))==-1)
  {
fprintf(stderr,"Open %s Error:%s/n",argv[1],strerror(errno));
exit(1);
 } 

 if((to_fd=open(argv[2],O_WRONLY|O_CREAT,S_IRUSR|S_IWUSR))==-1)
  {
        fprintf(stderr,"Open %s Error:%s/n",argv[2],strerror(errno));
        exit(1);
 } 
  
 while(bytes_read=read(from_fd,buffer,BUFFER_SIZE))
 { 
   if((bytes_read==-1)&&(errno!=EINTR)) break;
   else if(bytes_read>0)
       {
  ptr=buffer;
  while(bytes_write=write(to_fd,ptr,bytes_read))
   { 
     if((bytes_write==-1)&&(errno!=EINTR))break; 
     else if(bytes_write==bytes_read) break; 
     else if(bytes_write>0)
           {
      ptr+=bytes_write;
   bytes_read-=bytes_write;
          }
          } 
         if(bytes_write==-1)break; 
       }
  }
 close(from_fd);
 close(to_fd);
 exit(0);
}

 

写到这里,我突发奇想,完全可以自己做一个shell,实现基本的功能,这也是《linux内核设计实习》里的一个作业,我会去试着做


操作系统实验用C语言编程实现复制文件

  • 2015年06月14日 18:13
  • 266KB
  • 下载

系统调用的文件编程实现cp命令

系统调用的函数常用的有:open,close,creat,read,write,lseek,dup这几个函数。 实现cp的过程:cp命令使用格式   cp 文件1 文件2 首先打开文件->...
  • qq_31339221
  • qq_31339221
  • 2017-07-24 19:24:05
  • 343

cp命令的编写——浅谈系统调用

摘要:linux中cp命令的实现,通过这个程序,我们需要了解系统调用耗费时间的方面,同时学会系统调用的错误处理机制。...
  • trochiluses
  • trochiluses
  • 2013-09-05 08:45:15
  • 1884

linux下使用系统调用编程实现dir命令功能

也是很简单的小程序,用到了一些目录操作#include #include #include #include #include #include #include static int get_inf...
  • rainman1981
  • rainman1981
  • 2004-09-10 12:31:00
  • 1804

编写程序mycp.c,实现从命令行读入文件的复制功能,用原始文件系统调用。

  • 2010年01月22日 04:09
  • 749B
  • 下载

Linux ls -l命令的实现

使用方法:ls  [目录名]    输出结果:此目录下的文件和子目录的详细信息 ls -l工作原理: ------打开目录文件 //opendir(dirname)系统调用 -----w...
  • zhanghuanlucy
  • zhanghuanlucy
  • 2016-04-09 14:19:24
  • 1061

cp命令C实现

1.从有需求做起,不要盲目看书。 2.有计划,有步骤的学习。 3.主动学习,学会分享。 暂不说其他,我觉得第1条在我们学习过程中很值得注意。前段时间做了my_ls.c和my_shell.c。虽然...
  • darennet
  • darennet
  • 2014-10-25 22:12:16
  • 3472

Linux系统调用讲义

Linux下系统调用的实现 Unix/Linux操作系统的体系结构及系统调用介绍 什么是操作系统和系统调用     操作系统是从硬件抽象出来的虚拟...
  • zhy05
  • zhy05
  • 2007-05-20 14:03:00
  • 2531

系统调用实现Linux命令 ls -al

二话不说直接上代码(这是我之前在网易博客上写的搬过来) ls.c 如下: #include "ls.h" /****************************************...
  • KayChanGEEK
  • KayChanGEEK
  • 2017-06-08 20:10:19
  • 490

linux下的copy命令

在Linux系统中复制或拷贝文件我们可以用cp或者copy命令,但要对一个文件夹中的全部文件复制到另外一个文件夹中去,如何进行操作呢? 下面简单来介绍一下。 百度经验:jingyan...
  • y727392439
  • y727392439
  • 2017-10-20 10:18:36
  • 124
收藏助手
不良信息举报
您举报文章:linux下使用系统调用编程实现copy命令功能
举报原因:
原因补充:

(最多只允许输入30个字)