linux文件操作

Linux的文件类型有7种:
普通文件:Regular file
目录文件:Directory file
块设备文件:Block special file
字符设备文件:Character special file
命名管道文件:FIFO
套接字文件:Socket
符号链接文件:Symbolic link

普通文件:分为文本文件和二进制文件,文本文件是字符文件,就是我们可以直接查看的文件,例如我们编写的C语言程序(vi filename即可直接查看)二进制文件表示的是信息在内存中的格式,例如C程序编译过后的a.out就是二进制文件(用vi filename打开是满屏幕的@@@)

目录文件:是文件系统树形结构的关键,分别用 . 和 . . 表示了自身的节点和父目录的节点。(ls -a即可查看到每个目录当中都有 . 和 . . 这两个文件)。

字符设备文件:关于设备的字符数据构成一个连续的数据流,字符设备不具备缓冲流,所以对这种设备的读写时实时的,如串口终端,磁带机等。

块设备文件:设备的数据暂时放入缓冲区中,待时机成熟时,一次性写入设备或者一次性从设备中读取,例如磁盘和文件系统等。(cd /dev进入dev目录下,ls –l tty可以查看串口,ls –l had1可以查看设备)

命名管道文件:分为有名管道和无名管道,主要用于linux下进程之间的传递数据,是一种进程通信的方法。意思就是说,有两个进程,一个进程发个数据,另一个进程可以通过管道接收到。

套接字文件:用于不同计算机进程间的通信,可以实现网络中节点的相互通信。(TCP套接字,UDP套接字,原始套接字)

符号链接文件:链接文件是在不同的文件系统之间建立了一种链接关系。链接文件所包含的指向文件的指针可以实现对文件的访问。

Linux下的文件描述符:创建一个文件成功后,将返回一个文件描述符,以后见到这个描述符后,就可以看作是对这个文件要进行操作了。(一般而言,返回一个int型的小的正数,例如0 1 2 要是返回-1 -2这样的数的话,可能就是文件没有成功的创建或者访问,视具体情况测试而定)
补充:
#define STDIN_FILENO 0
#define STDOUT_FILENO 1
#define STDERR_FILENO 2

Linux文件的基础操作:(程序示例)

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
#include <malloc.h>

int main()
{
	char *buf="abcdefg";
	char *buf1=NULL;
	int i;
	int fd=creat("/home/usrname/testfile",0700);   
	open("/home/usrname/testfile",O_RDWR);
	write(fd,buf,8);
	close(fd);

	int fd1=open("/home/usrname/testfile",O_RDWR);
	lseek(fd1,0,SEEK_SET);
	buf1=(char *)malloc(8);
	read(fd1,buf1,8);
	printf("testfile content is: ");
	for(i=0;i<8;i++)
	{printf("%c",buf1[i]);}
	putchar('\n');
	close(fd1);	
	return 0;
}

程序简要注释:
头文件:可用man函数查询得到。(例如:man 2 creat,man 2 open,man 2 read,man 2 write等)

主函数:(前半部分)
creat函数:路径为/home/lwb/testfile, 权限为0700表示属主可读可写可执行(权限值还有其他的值,可查询得到)返回值fd就是文件的描述符。
open函数:打开文件,路径就是creat函数所创建的文件的名字,权限为可读可写。
write函数:向打开的文件中,写入buf中的内容,并且为buf中的内容准备了8个字节长度的空间。(一般用strlen(buf)判断需要准备的字节长度)
close函数:关闭文件。(对文件操作完后,要相应的关闭,否则文件可能会丢失损坏内容)

主函数:(后半部分)
lseek函数:是为了把光标定位文件中abcdefg这个内容的a位置,然后从该位置开始向后寻找了8个字节上的内容。(要是把0成2,8换成3,就相当于是从c位置开始寻找了3个字节的内容,即cde)
read函数:是就将读取到的内容找个地方放下来。(程序中放在了指针buf1指向的8个字节char型的内存当中去了)

英语积累:buffer:缓冲区 content:内容

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值