【Linux-c编程】实现简单的cp命令

1 #define _LARGEFILE_SOURCE          //1-3:定义宏:才能让系统支持大于2GB文件复制操作。

2 #define _LARGEFILE64_SOURCE
  3 #define _FILE_OFFSET_BITS 64
  4 #include<stdio.h>
  5 #include<string.h>
  6 #include<stdlib.h>
  7 #include<fcntl.h>
  8
  9 int main(int argc,char *argv[])
 10 {
 11         int fd_src,fd_des;
 12         char buf[128];
 13         int num;
 14         if(argc-3)                                                                            //如果参数格式不是 cp  file_src  file_des,则报错退出。
 15         {
 16                 printf("the format must be:cp file_src file_des");
 17                 exit(EXIT_FAILURE);
 18         }
 19
 20         if((fd_src=open(argv[1],O_RDONLY))==-1)                             // 如果文件不存在,则报错退出。
 21         {
 22                 perror("open1");
 23                 exit(EXIT_FAILURE);

}
 25
 26         if((fd_des=open(argv[2],O_CREAT|O_EXCL|O_WRONLY,0644))==-1)// 以写的方式打开文件,O_EXCl:如果目标文件存在,报错。
 27         {
 28                 perror("open2");
 29                 exit(EXIT_FAILURE);
 30         }
 31
 32         do                                                     
 33         {
 34                 num=read(fd_src,buf,128);              //读源文件
 35                 write(fd_des,buf,num);                // 写入目标文件
 36         }while(num==128);

37         close(fd_src);
 38         close(fd_des);                                                                  //关闭文件
 39         return 0;
 40 }

时间: 2024-12-23 10:15:43

【Linux-c编程】实现简单的cp命令的相关文章

使用linux-c编程实现简单的ls命令

使用Linux-c编程实现简单的ls命令 具体代码如下:     加载的头文件有stdio.h,sys/types.h,dirent.h,unistd.h,sys/stat.h,fcntl.h,string.h等. void main(int argc,char **argv){      DIR *dir;      struct dirent *rdir;      struct stat statbuf;      char * buffer="/";      char *fi

从简入难makefile文件编写,Linux C++编程,简单vi命令

 1.一个最基本的C++程序 2.第二个c++程序 3.第一个入门级别的简单的makefile 4.在makefile中定义变量. 5.编写makefile的依赖 如果start:标识后面的某个.o没有,则重新编译没有编译的那个文件 6.最终的makefile文件 总结:makefile是通过.o文件是否存在已经.cpp最后的修改时间来判断是否重新编译.o文件. 7.makefile不管理.h文件,它是编译器来进行管理的. vi: i在光标之前插入 a在光标后面插入 x删除后面的字符 dd删

关于linux shell编程,alias rm=&#39;cp [email&#160;protected] ~/backup; rm [email&#160;protected]&#39;

书上的这个例子需要在ubuntu的低版本的系统才支持,现在基本上都不支持了,想实现也很简单自己写一个脚本先备份再删除. alias也只是做了一次替换alias rm='cp [email protected] ~/backup; rm [email protected]' rm text.txt被转换成了cp  [email protected] ~/backup; rm [email protected] text.txt即cp  ~/backup; rm  text.txt可以看到text.

实现简单的cp命令

在Linux下实现简单的cp命令.这是<APUE>第四章的其中一道练习题. 其实思路很简单,弄清规则就行了.规则1:源文件必须得存在,否则出错:规则2:目的文件若不存在则创建,若存在,则提示是否覆盖,是就覆盖,不是就重新建一个. 下面给出代码: 1 /* 实现简单的cp命令 */ 2 #include <stdio.h> 3 #include <stdlib.h> 4 #include <string.h> 5 6 int my_cp(char *argv[

Swift和C混合Socket编程实现简单的ping命令

这个是用Mac下的Network Utility工具实现ping命令,用Wireshark抓取的ICMP数据包: 发送ICMP数据包内容 接受ICMP数据包内容 一.icmp结构 要真正了解ping命令实现原理,就要了解ping命令所使用到的TCP/IP协议.ICMP(Internet Control Message,网际控制报文协议)是为网关和目标主机而提供的一种差错控制机制,使它们在遇到差错时能把错误报告给报文源发方.ICMP协议是IP层的 一个协议,但是由于差错报告在发送给报文源发方时可能

Linux Shell编程笔记一:相关命令

相关出处请查看:http://www.cnblogs.com/stephen-liu74/archive/2011/11/01/2202027.html 零.shell中的内部变量: 1.    $?:    表示shell命令的返回值.2.    $$:    表示当前shell的pid.3.    $!:    最后一个放入后台作业的PID值.4.    $0:    表示脚本的名字.5.    $1--$9,${10}: 表示脚本的第一到九个参数,和第十个参数.6.    $#:    表

Linux rpc 编程最简单实例

通过rpcgen的man手册看到此工具的作用是把RPC源程序编译成C语言源程序,从而轻松实现远程过程调用.1.下面的例子程序的作用是客户端程序(fedora Linux下)取中心服务器也是Linux上)时间的,编程过程如下:先编写一个 “ RPC 语言 ” ( RPC Language ( Remote Procedure Call Language ) ) 的源文件 test.x ,文件后缀名为 x .源代码如下:program TESTPROG {   version VERSION {  

Linux C编程(1) vim及gcc命令

1. 输入以下命令可以启动vi: (1) vi:不指定文件名,在保存文件时需要指定文件名. (2) vi 文件名:该文件既可以是已存在的,也可以是新建的. (3) vi +n 文件名:进入vi,光标停在第n行开始处. (4) vi + 文件名:进入vi,光标停在文件最后一行开始处. (4) vi +/字符串 文件名:进入vi,光标停在第一个字符串处所在行. 2. vi中保存文件并退出: (1) w 文件名:将当前文件的内容保存由"文件名"指定的新文件中,若该文件已存在则产生错误. (2

linux sheel编程学习笔记(二) --- grep命令

Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户. grep的工作方式是这样的,它在一个或多个文件中搜索字符串模板.如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名.搜索的结果被送到标准输出,不影响原文件内容. grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果模板搜索成