我是靠谱客的博主 香蕉小白菜,最近开发中收集的这篇文章主要介绍APUE之open,read,write,close函数应用,制作基本的makefile。,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

条件:将文件A中的内容写入文件B中。其中需要判断文件A,B是否存在。若B存在则删除以前内容,再将A中内容写入。


dd.c

/*********************************************************************************
*
Copyright:
(C) 2014 songyong<handy_skyoutlook.com>
*
All rights reserved.
*
*
Filename:
dd.c
*
Description:
This file
*
*
Version:
1.0.0(2014年12月19日)
*
Author:
sky <handy_sky@outlook.com>
*
ChangeLog:
1, Release initial version on "2014年12月19日 20时38分08秒"
*
********************************************************************************/
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <string.h>
#define BUF_SIZE 128
/********************************************************************************
*
Description:
*
Input Args:
*
Output Args:
* Return Value:
********************************************************************************/
int main (int argc, char **argv)
{
char
*src_file;
char
*dst_file;
int
fd_src;
int
fd_dst;
char
buf[BUF_SIZE];
int
len;
if(argc != 3)
{
printf("usage: %s [src_file] [dst_file]n", argv[0]);//不符合参数个数即报错.
return -1;
}
src_file
=
argv[1];
dst_file
=
argv[2];
fd_src
=
open(src_file,O_RDONLY);
if(fd_src < 0)
{
printf("Open file '%s' failure: %sn",src_file,strerror(errno));
return 0;
}
fd_dst
=
open(dst_file,
O_RDWR|O_CREAT|O_TRUNC,0755);
if(fd_dst
< 0)
{
printf("Open file '%s' failure: %sn",dst_file,strerror(errno));
return 0;
}
while ((len = read(fd_src,buf,sizeof(buf)))
>
0)
{
write(fd_dst,buf,len);
}
close(fd_src);
close(fd_dst);
return 0;
} /* ----- End of main() ----- */


makefile

bins
=
dd
objs
=
dd.o
srcs
=
dd.c
$(bins) :
$(objs)
gcc -o dd dd.o
$(objs) :
$(srcs)
gcc -c dd.c
clean:
rm -f $(bins) (objs)


附上makefile的制作规则:

target ... : prerequisites ...
command
...
...

target也就是一个目标文件,可以是Object File,也可以是执行文件。还可以是一个标签(Label)。
prerequisites就是,要生成那个target所需要的文件或是目标。
command也就是make需要执行的命令。(任意的Shell命令)

这是一个文件的依赖关系,也就是说,target这一个或多个的目标文件依赖于prerequisites中的文件,其生成规则定义在command中。说白一点就是说,prerequisites中如果有一个以上的文件比target文件要新的话,command所定义的命令就会被执行。
我初步理解的决定关系为:

                  .h or .c文件 → (- c)→.o → (- o)→可执行的目标文件.
gcc:
        -o output_filename,确定输出文件的名称为output_filename,同时这个名称不能和源文件同名。如果不给出这个选项,gcc就给出预设的可执行文件a.out。
-c 只编译代码生成object目标文件但不进行链接。


最后

以上就是香蕉小白菜为你收集整理的APUE之open,read,write,close函数应用,制作基本的makefile。的全部内容,希望文章能够帮你解决APUE之open,read,write,close函数应用,制作基本的makefile。所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部