Chinaunix首页 | 论坛 | 博客
  • 博客访问: 108868
  • 博文数量: 35
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 287
  • 用 户 组: 普通用户
  • 注册时间: 2015-08-01 19:56
文章分类
文章存档

2017年(6)

2016年(21)

2015年(8)

我的朋友

分类: 嵌入式

2015-12-22 22:41:31

当遇见一个不懂的函数时该怎么学习呢
1:查看函数名。上网或者书上找相关资料 《unix环境高级编程》
例open()函数;
2:查看函数原型,在虚拟机中使用命令查看函数原型
redhat:man open
ubuntu: man 2 open
3:记录函数的一些参数,记录在《linux应用程序开发学习手册》
1函数名
open()
2函数原型
open(const char *pathname, int flags);


open(const char *pathname, int flags, mode_t mode);

3函数功能

open, creat - open and possibly create a file or device

Open,creat-用来打开和创建一个文件或设备

4所属头文件
#include 


#include 

#include 

5返回值

成功:file descriptor 文件描述符

失败:-1

6参数说明

Pathname:要打开的文件名(含路径)

Flags(打开文件的标志,用一个或多个常量进行“或”运算构成)

-O APPEND:以追加的方式打开文件

-O_CREAT:当打开的文件不存在时创建该文件

Mode:一定是在flags中使用了O_CREAT标志,mode记录待创建的访问权限


4:写一个小程序进行函数的使用,熟练函数的参数运用
include
#include
#include
#include
void main()
{
    int fd;
    fd = open("/home/lesson3.c",O_RDWR|O_CREAT,0700);
    if(fd<0)
     printf("open file fail\n");
}
编译程序
gcc lesson3.c -o lesson3
运行程序
./lesson3

系统调用的函数:

打开函数 open()
创建函数 create()
关闭函数 close()
读函数 read()
写函数 write()
定位文件函数 lseek()
复制文件描述符函数 dup() dup2()

写一个有上面函数组合在一起的一个程序,实现简单的cp命令程序。cp.c
#include
#include
#include
#include

void main(int argc,char **argv)  // argv[0] 存放的是命令的名字,cp
{
    int fd_s;
    int fd_t;
    int count = 0;
    char buf[512];   //开一个暂时存放读出数据的存放空间512个字节,栈的空间
/* 打开源文件*/
    fd_s=open(argv[1],O_RDONLY);    // 使用open函数,使用不需要创建新文件的,只有两个参数,argv[1]有**argv参数传进来存放在数组的第一个参数   O_RDONLY以只读的方式打开源文件  然后由fd_s变量来保存一个文件描述符

/* 打开目标文件*/
    fd_t=open(argv[2],O_RDWR|O_CREAT,0666);  // 目标文件名存放在argv[2]第二个参数中,打开方式 O_RDWR可读可写|O_CREAT创建目标文件(目标文件不存在) 创建文件的权限0666

/* 读取源文件数据, 将读取出的源文件数据写入目标文件*/
    while((count=read(fd_s,buf,512))>0)  // read函数读数据,用while循环实现多次读数据。一个大的数据就会被拆分多个512字节数据被读取,fd_s是源文件,在源文件中读数据,buf读取出来的数据存放在buf                                                                             中,开的buf为512个字节,读出的数据量为512个字节,读出所有数据后存放到count中。
   write(fd_t,buf,count);  //从buf写出的数据存到fd_t中,写出的数据量为count中的数据。

/* 关闭文件*/
    close(fd_s);
    close(fd_t);


}

创建源文件s.txt
gcc -g cp.c -o cp
运行程序 ./cp s.txt ./t.txt





















阅读(1159) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~