您的位置:首页 > 其它

2-1 系统调用方式-文件访问

2011-08-26 22:48 375 查看
1.常见创建模式

  U_IRUSR 可读

  U_IWUSR 可写

  U_IXUSR 可执行

  U_IRWXU 可读,写,执行

还可以直接用数字来表示文件的访问权限

可执行:1

可写:2

可读:4

可读,写:6

无任何权限:0

2.常用的文件打开标志

O_RDONLY  只读方式打开

O_WRONLY  只写方式打开

O_RDWR   读写方式打开

O_APPEND 追加方式打开

O_CREAT   创建一个文件

3.打开文件

(1) int open(const char *pathname,int flags)

(2) int open(const char *pathname,int flags,mede_t mode)

pathname:要打开的文件名

flags:打开标志

mode:访问权限

注意:如果使用了O_CREAT创建一个文件的方式必须使用带3个参数的open。

例如:open(pathname,O_CREAT|O_RDWR,0755)

如果文件存在打开文件,否则创建文件

4.文件关闭

int close(int fd)

fd位int open()函数返回的文件描述符

5.读写

int read(int fd,void *buf,size_tlength)

功能:从文件描述符fd所指的文件读取length个字节到buf所指向的缓冲区中,返回值位实际读取的字节数。

如果返回0,表示未读入任何数据,已到达了文件尾部。如果返回-1,表示出现错误

int write(int fd,void *buf,size_tlength)

功能:从buf所指向的缓冲区中前length个字节读取到s文件描述符fd所指的文件,返回值位实际读取的字节数。

如果返回0,表示未写入任何数据。如果返回-1,表示出现错误

6.访问判断:判断某个文件是否具有某种权限

int access(const char *pathname,int mode)

mode:要判断的访问权限。可以去一下值或者他们的组合

R_OK 文件可读

W_OK 文件可写

X_OK 文件可执行

F_OK 文件存在

返回值:当我们测试成功是返回0,否则返回-1.

7.read write实例

#include <unistd.h>
#include <stdio.h>

int main()
{
char buffer[256];
int nread;

nread=read(0,buffer,256);
if(nread==-1)
write(2, "出现错误1\n",22);
if(write(1,buffer,nread)!=nread)
write(2, "出现错误2\n",22);
}

8.read write open close实例

(1)文件复制----单字符

#include <unistd.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>

int main()
{
char c;
int in,out;

in=open("read1.c", O_RDONLY);
out=open("write1.c",O_WRONLY|O_CREAT,S_IRUSR|S_IWUSR);

while(read(in,&c,1)==1)
write(out,&c,1);

close(in);
close(out);

exit(0);
}

(2)文件复制----字符串

#include <unistd.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>

int main()
{
char block[1024];
int in,out;
int nread;

in=open("read1.c", O_RDONLY);
out=open("write2.c",O_WRONLY|O_CREAT,S_IRUSR|S_IWUSR);

while((nread=read(in,block,sizeof(block)))>0)
write(out,block,nread);

close(in);
close(out);

exit(0);
}

  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: