Chinaunix首页 | 论坛 | 博客
  • 博客访问: 83554
  • 博文数量: 12
  • 博客积分: 1445
  • 博客等级: 上尉
  • 技术积分: 130
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-12 10:12
文章存档

2010年(12)

我的朋友

分类: C/C++

2010-05-19 14:56:41

      在DM365开发板来之前,准备重新把Linux应用程序开发的部分温习一遍,不必细看,捡其重要部份摘之。以国嵌视频为主,华清的两本应用开发书为辅,APUE为后续参考。

一,文件IO操作

(一)系统调用

1,creat函数,int creat(const char *filename, mode_t mode)
     创建文件。参数1为文件名,参数2为创建模式(如0777),表示文件的所有者,所在组,其它者对文件的可读可写可执行的权限。

2,open函数,int open(const char *pathname, int flags, mode_t mode)
      打开文件。两种调用方式,区别在于多一个参数3。参数1为文件名,参数2为标志(O_RDONLY只读,O_RDWR读写,O_CREAT如不存在则创建,O_NOBLOCK非阻塞),参数3为创建模式。如果使用了O_CREAT标志,则必需加上参数3,其余不需。成功后返回一个文件描述符fd。注意区分标志的模式中的读写相关的设定,标志只说明此次操作是什么行为,即使模式指定了文件是可读写的,但假如这一次open设定标志为只读,那在此次操作中是不可写的。

3,close函数,int close(int fd)
      关闭一个文件。参数是open调用后返回的文件描述符。

4,read函数,int read(int fd, const void *buf, size_t length)
      从fd指定的文件中读一段数据放到buf中。参数1为文件描述符,参数2为读取的数据放在哪个缓冲区,参数3是欲读取的字节数。返回值是实际读到的字节数。

5,write函数,int write(int fd, const void *buf, size_t length)
      把buf中的某段数据写到fd指定的文件中。参数1为文件描述符,参数2为要写的数据放在哪个缓冲区,参数3是欲写入的字节数。返回值是实际写入的字节数。

6,lseek函数,int lseek(int fd, offset_t offset, int whence)
      将文件读写指针相对whence移动offseet个字节。参数1为文件描述符,参数2为移动的字节数,可取负值表示向前移动,参数3是读写指针所在位置,可取SEEK_SET相对文件开头,SEEK_END相对文件末尾,SEEK_CUR相对当前读写指针位置。返回值是文件指针相对于文件头的位置。

7,access函数,int access(const char *pathname, int mode)
      判断文件是否可进行读写等操作。参数1为文件名,参数2为要判断的操作组合,如R_OK文件可读,F_OK文件存在等。测试成功时返回0,有任意一个不满足返回-1。

8,fstat/stat函数,int fstat(int fd, struct stat *buf)/int stat(const char *file_name, struct stat *buf)
      将文件状态返回到buf结构体中,比如文件大小等,功能强大。两函数不同处在于参数1是文件名还是文件描述符。

9,getcwd函数,char *getcwd(char *buffer, size_t size)
      把当前路径存放到buffer中,如果缓冲区太小,返回-1。

10,mkdir函数,int mkdir(char *dir, int mode)
      创建一个新目录。

(二)C库函数

1,fopen函数,FILE *fopen(const char *filename, const char *mode)
      打开文件。参数1为文件名,参数2为打开模式,如r,rb,w,wb,w+,r+,a+,b用来区分二进制文件和文本文件,但linux系统不区分,所以参数中的b可以不用加。

2,fclose函数,int fclose(FILE *stream)
      关闭文件。

3,fread函数,size_t fread(void *ptr, size_t size, size_t n, FILE *stream)
      从文件读取数据。从stream文件中读取n个字段,每个字段size个字节,读到ptr缓冲区中。返回值是实际读到的字节数。

4,fwrite函数,size_t fwrite(const void *ptr, size_t size, size_t n, FILE *stream)
      写数据到文件。从ptr缓冲区中读取n个字段,每个字段size个字节,写到stream文件中。返回值是实际写入的字节数。

5,fgetc函数,int fgetc(FILE *stream)
      从文件中读一个字符。

6,fputc函数,int fputc(int c, FILE *stream)
      写一个字符到文件。

7,fscanf函数,int fscanf(FILE *stream, char *format[,argument...])
      从一个流中进行格式化输入。

8,fprintf函数,int fprintf(FILE *stream, char *format[,argument...])
      格式化输出到一个流中。与之类似的有一个重要的sprintf函数,参数1换成一个字符串指针,也就是格式化输出到一个字符串指针中。

9,fseek函数,int fseek(FILE *stream, long offset, int whence)
      移动文件读写指针。

10,ftell函数,long ftell(FILE *stream)
      返回当前文件读写指针。通常先用fseek将读写指针置尾,再调用此函数得到文件大小,再用fseek将指针置首恢复。

11,feof函数,int feof(FILE *stream)
      检测流上的文件结束符,若到结尾则返回1。

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