Linux c==嵌入式文件编程(1)

来源:互联网 发布:java培训出来找工作难 编辑:程序博客网 时间:2024/06/06 12:47

文件描述符fd的定义

是一个非负整数,用来索引文件并表示

操作系统提供的API函数:

1.creat
函数的作用: 创建一个文件;
函数的原型: int creat(const char *pathname, mode_t mode);
文件头:

 #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h>

返回值:成功:新的文件描述符; 出错: -1

2. open
函数的作用:打开一个文件;
函数的原型:
int open(const char *pahtname, int flags);
int open(const char *pahtname, int flags, mode_t mode);
返回值:文件描述符—成功;出错:-1;
flags:
参数:
O_RDONLY
O_WRONLY;
O_RDWR;
O_CREAT: 如果原来折耳根文件不存在,那么有这个参数就可以创建这个文件;
O_APPEND:原来有内容,则会自动保留文件内容,自动向下读写;
O_TRUNC: 文件存在,有内容,文件清空;

3.read
函数的作用: 从打开的文件中读取数据
函数的原型:ssize_t read(int fd, void *buf, size_t count);
包含的头文件: #include <unistd.h>

返回值:正常是实际读到的字节数;
如果是在文件结束或者是无数据,返回0;
出错,-1;

4. write
函数的作用: 向打开的文件中写数据
函数的原型: ssize_t write(int fd, const void *buf, size_t count);
头文件: #include <unistd.h>

返回值: 成功会返回实际写入的字节数;
出错:-1;

4. lseek
函数的功能:进行文件定位
函数的原型: int lseek(int fd, offset_t offset, int whence);
函数的参数:fd:
offset: 指针的微调,在指定的指针向前移动为负, 向后为正;

     whence:  SEEK_SET:放在文件头               SEEK_CUR:当前的位置;               SEEK_END:  文件尾;

返回值:返回文件当前指针到文件开始的地方有多少字节;
出错-1;

5. fopen
函数的作用: 打开文件
函数的原型: FILE *fopen(const char *pth, const char *mode)
mode:
r:读,文件必须存在;
r+:打开可读写,文件必须存在;

w:打开只写文件,文件不存在就会创建文件; 文件清0;
w+:打开可读写的文件,

a:附加的形式打开只写文件,不存在就创建,存在就写到原来的文件尾。
a+:以附加的形式打开可读写的文件,不存在就创建,存在就写到原来的文件尾。

b:二进制文件

文件头: #include <stdio.h> #include " "
返回值: 成功是指向=文件流的指针;
出错返回NULL;

7. fputc
函数的作用: 将一个指定的字符写入到文件流中;
函数的原型: int fputc(int c, FILE *stream);
返回值: 返回写入成功的字符,c; EOF则表示失败。

8.fgetc
函数的作用:从文件流中读取一个字符
函数原型: int fgetc(FILE *stream)
返回值:返回值正常的是读取的字符;EOF表示到了文件尾;

9.fputs
函数的作用:将一个字符串写入到文件内
函数的原型: int fputs(const char *s, FILE *stream)
返回值:成功返回写成字符数; EOF表示出错

9. fgets
函数的作用:从文件中读取一个字符串;
函数的原型: char *fgets(char *s, int size, FILE *steam)
函数的参数:
从stream中读size-1个字符到s中
返回值: 成功返回s, 出错NULL。

10. fread
函数的作用:从文件流中读取数据块
函数原型: size_t fread(void *ptr, size_t size, size_t nmemb, FILE * stream);
返回值: 返回实际读到数据块的数目
比nmember小的话,可能是到了文件尾,或者错误发生。
feof :到文件尾;
ferror:判断错误的

10. fwrite
函数的作用: 将数据块写到文件流中:
函数原型: size_t fwrite(const void * ptr, size_t size, size_t nmemb, FILE *stream);
返回值: 实际写入的nmemb数目;

11.fseek
函数的作用:移动文件流的读写位置
函数的原型: int fseek(FILE * stream, long offset, int whence)
返回值:成功返回0, 出错-1;

**使用ftell来获取当前的位置;

12. ftell
函数的作用:读取文件流的读写位置;
函数的原型:long ftell(FILE * stream)
返回值: 成功返回当前的读写位置;
出错-1;

13. feof
函数的作用: 检测文件流是否到了文件尾
函数的原型:int feof(FILE *steam)
返回值: 非零代表到了文件尾,其他是0;

14. fprintf
函数的作用:格式化数据到文件
函数的原型: int fprintf(FILE *stream, const char *format, ....);
返回值:成功返回实际输入的字符数,失败-1;

fprintf()

15. fscanf
函数的作用: 格式化字符串输入
函数的原型: int fscanf(FILE *strem, const char *fromat,....)
返回值:成功返回参数数目,出错-1

15. 进程和程序的区别?

16:进程的生命周期:创建,运行,消除;

如何创建一个进程?
如果来使进程退出?

17.getpid
函数的作用:获取进程识别码,进程号
函数的原型: pid_t getpid(void);
返回值:目前进程的进程号;
头文件: #include <unistd.h>

18. fork
函数的作用:创建一个进程
函数的原型:pid_t fork(void);
函数的返回值:

   <0  出错;   =0   表示当前创建的子进程   >0   父进程  ,返回值是子进程的进程号

性质:
fork创建的子进程把父进程的资源拷贝了一份, 父子进程把所有的重新执行一遍;
vfork创建的子进程和父进程共享数据空间, 不是重新拷贝

19. vfork

函数的作用:建立一个新的进程;
函数的原型: pid_t vfork();
特点:子进程先运行,退出,父进程才能运行

tips

1.创建文件的方式
共有三种,create函数,open函数,fopen函数,通过一些参数决定
2.如何判断一个文件已经被读完了
若是无缓冲区,利用read函数的返回值,当文件被读完或者没有数据时,返回0
若是有缓冲区,利用feof函数,非零代表到了文件尾

0 0