linux读取不到加密文件流

linux读取不到加密文件流,第1张

加密层被破坏。根据查询linux相关信息显示,linux读取不到加密文件流是因为加密层被破坏。加密层在文件系统之上,当加密层被破坏,文件无法被解密,因此无法读取数据。Linux是一套免费使用和自由传播的类Unix *** 作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的 *** 作系统。

Linux的本质就是一切皆文件,输入输出设备也是以文件形式存在和管理的。

内核启动的时候默认打开这三个I/O设备文件:标准输入文件stdin,标准输出文件stdout,标准错误输出文件stderr,分别得到文件描述符 0, 1, 2。

你只是以自定义的文件代替了系统默认的设备文件,实现了输入输出的重定向。

read函数(读取文件)

read函数可以读取文件。读取文件指从某一个已打开地文件中,读取一定数量地字符,然后将这些读取的字符放入某一个预存的缓冲区内,供以后使用。

使用格式如下:

number = read( ...

read函数(读取文件)

read函数可以读取文件。读取文件指从某一个已打开地文件中,读取一定数量地字符,然后将这些读取的字符放入某一个预存的缓冲区内,供以后使用。

使用格式如下:

number = read(handle, buffer ,n) ;

上述read调用函数中,各个参数的定义如下:

handle: 这是一个已经打开的文件句柄,表示从这个文件句柄所代表的文件读取数据。

buffer: 指缓冲区,即读取的数据会被放到这个缓冲区中去。

n: 表示调用一次read *** 作,应该读多少数量的字符。

number:表示系统实际所读取的字符数量。

假设某个文件的长度是600字符,而n的值是512,则在第1次调用读这个文件时,系统可以正常地读取512个字符地内容,并将这些字符数量传给number变量,因此number的值将变为88。要第2次读取这个文件时,因为文件已经没有内容可供读取了,此时系统会返回0给number。另外,如果读取文件失败,系统将返回-1给number。

比如一个有100个字节的文件,第一次读取10个字节,这时读取指针在第10个字节处。再次进行10个字节的读 *** 作时,会接着第一次读的位置接着往后读。如果还想从开始读,可使用lseek函数定位。

Code:

#include "lyl.h"

#define BUF 512

main()

{

static char filename[]="t1.txt"

char buffer[BUF]

int handle

int i

int total = 0

handle = open(filename,O_RDONLY)

if ( handle == -1 )

{

printf("[%s] create fail !!!!

",filename)

exit(1)

}

else

{

while( (i = read(handle,buffer,BUF) ) >0 )

total =i

}

printf("The total character in 《%s》 is %d

",filename,total )

exit(0)

}

程序执行结果:

The total character in 《t1.txt》 is 11

$cat t1.txt

1234567890

【 read系统调用】

功能描述:

从文件读取数据。

用法:

#include <unistd.h>

ssize_t read(int fd, void *buf, size_t count)

参数:

fd: 将要读取数据的文件描述词。

buf: 所读取到的数据的内存缓冲。

count: 需要读取的数据量。

返回说明:

成功执行时,返回所读取的数据量。失败返回-1,errno被设为以下的某个值

EAGAIN:打开文件时设定了O_NONBLOCK标志,并且当前没有数据可读取

EBADF:文件描述词无效,或者文件不可读

EFAULT:参数buf指向的空间不可访问

EINTR:数据读取前, *** 作被信号中断

EINVAL:一个或者多个参数无效

EIO:读写出错

EISDIR:参数fd索引的时目录

备注:

从串口读数据,只读一次,数据没有读全。加入while后,则数据读全了。

total_read_bytes=0

while(read_bytes=read(fd_485,buffer1,256)>0)

{

memcpy(buffer2+total_read_bytes,buffer1,read_bytes)

total_read_bytes+=read_bytes

}

for(i=0i<total_read_bytesi++)

printf("0x%02lx\n",buffer2[i])


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11757396.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存