open(打开文件):
需要的头文件:
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
参数原型: int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);
pathname:要打开的文件名
Flags:
1.O_RDONLY:只读打开
2.O_WRONLY:只写打开
3.O_RDWR:可读可写打开
当我们附上权限之后,打开的文件就只能按照这种权限操作。以上这三个常数中应当只指定一个。下列参数是可选择的:
O_CREAT:若文件不存在创建它。使用此选项时,需要同时说明第三个参数mode,用其说明新文件的存取许可权限
O_APPEND: 追加写,如果文件已经有内容,这次打开文件所写的数据附加到文件的末尾而不覆盖原来的内容
O_TRUNC 如果文件存在,并且以只写/读写方式打开,则清空文件全部内容(即将其长度截短为0)
Mode:一定是在flags中使用了O_CREAT标志,mode记录待创建的文件的访问权限。
例如:fd = open("./file1",O_RDWR|O_CREAT,0600);
返回值:文件描述符fd
fd == 0 打开文件失败
fd > 0 打开文件成功
write(将数据写入已打开的文件内)
需要的头文件:
#include <unistd.h>
参数原型:ssize_t write(int fd, const void *buf, size_t count);
fd:open函数返回的文件描述符
buf:待写入数据缓存区
count:要写入的字节数
例如:char *buf = “chenweiqiang hen shuai!”;
write (fd,buf,strlen(buf));
返回值:若写入成功,返回写入的字节数
失败返回-1
read(由已打开的文件读取数据)
需要的头文件:
#include <unistd.h>
参数原型:ssize_t read(int fd, void *buf, size_t count);
fd:open函数返回的文件描述符
buf:读取数据缓存区
count:要读取的字节数
例如:char *readBuf
readBuf =(char *) malloc (sizeof(char)*n_write +1 );
int n_read = read(fd,readBuf,n_write);
返回值:若读取成功,返回读取的字节数
失败返回-1
close(关闭文件)
需要的头文件:
#include <unistd.h>、
参数原型:int close(int fd);
fd:由open函数返回的文件描述符
例如:close (fd);
返回值:成功关闭返回0
失败返回-1
lseek(移动文件的读写位置)
需要的头文件:
#include <sys/types.h>
#include <unistd.h>
参数原型:off_t lseek(int fd, off_t offset, int whence);
fd:open函数返回的文件描述符
offset:根据参数whence来移动读写位置的位移数(负数往前走,正数往后走)
whence:
SEEK_SET(文件开始处)
SEEK_CUR(文件当前位置)
SEEK_END(文件末尾)
例如:lseek(fdSrc,0,SEEK_SET);
返回值:当调用成功返回目前的读写位置,也就是距离文件开头有多少个字节
失败返回-1
实现cp(复制)功能(代码实现):
1.c语言参数
2.第一步:打开src.c
第二步:读src到Buf
第三步:打开/创建des.c
第四步:将Buf写入到des.c
第五步:关闭2个文件