lseek illegal seek不能使用 linux 串口,lseek-lseek

怎样用lseek读取最后三个字节

lseek(fd, -3, SEEK_END);

read(xxx

如何使用libcurl实现HTTP的GET方法获取文件长度

用libcurl实现下载功能很方便,只要调用libcurl库即可。

long downloadFileLenth = 0;

1

2

3

4

5

6

7

8

9

10

11

12

CURL *handle = curl_easy_init();

curl_easy_setopt(handle, CURLOPT_URL, url);

curl_easy_setopt(handle, CURLOPT_CUSTOMREQUEST, “GET”); //使用CURLOPT_CUSTOMREQUEST

curl_easy_setopt(handle, CURLOPT_NOBODY, 1); //不需求body

if (curl_easy_perform(handle) == CURLE_OK)

{

curl_easy_getinfo(handle, CURLINFO_CONTENT_LENGTH_DOWNLOAD, &downloadFileLenth);

}

else {

downloadFileLenth = -1;

}

curl_easy_cleanup(handle);

可以完美解决用GET获取文件长度,而不下载文件内容。

怎样用lseek()函数将一个文件的内容附加到另一个文件上?

int main()

{

int iSrcFd = 0;

int iDesFd = 0;

CHAR acReadBuf[128] = {0};

int iReadBytes = 0;

int iWrtBytes = 0;

/* open the source file*/

iSrcFd = open("1.txt",O_RDWR | O_SYNC);

if (iSrcFd < 0)

{

return -1;

}

iReadBytes = read(iSrcFd, acReadBuf, 128);

/* open the des file */

iDesFd = open("2.txt",O_RDWR | O_SYNC);

if (iSrcFd < 0)

{

close(iSrcFd);

return -1;

}

lseek(iDesFd, 0, SEEK_END);

iWrtBytes = write(iDesFd, acReadBuf, 128);

close(iDesFd);

close(iSrcFd);

return 0;

}

lseek(iDesFd, 0, SEEK_END);就是将当前文件读写的位置移动到文件末尾

linux lseek函数怎么用

Linux的lseek函数用来控制一个打开的文件的读写位置,它的函数原型如下:

off_t lseek(int fildes,off_t offset ,int whence);

参数的用法:fildes参数为一个已打开的文件描述符;参数offset为读写位置的位移数,这个位移数是根据参数whence来确定的;whence参数分为下列三种:

SEEK_SET:表示offset用来直接设置读写位置。

SEEK_CUR:表示以目前的读写位置往后增加offset个位移量。

SEEK_END:表示将读写位置指向文件尾后再增加offset个位移量。

当whence值为SEEK_CUR或SEEK_END时,参数offet允许负值出现。当lseek调用成功时返回目前的读写位置,也就是距离文件开头多少个字节。若有错误则返回-1,errno会存放错误代码。下面是几个使用示例:

将读写位置移到文件开头:lseek(myfile, 0, SEEK_SET);

将读写位置移到文件尾:lseek(myfile, 0, SEEK_END);

想要取得目前文件位置:off_t cur=lseek(myfile, 0, SEEK_CUR);

注意:使用lseek函数需要包含以下头文件:

#include

#include

为什么C语言中read函数和write函数间要用lseek来调整读取顺序

-由于程序在打开文件时文件操作指针位于文件起始位置,即偏移量0

-读取了1个字符的内容给变量c,文件指针偏移量为1

-这时如果想将c值写到文件开始位置,则需要移动文件指针到文件开始

-于是lseek就是移动文件当前指针的语句,它通知系统将文件指针移动到从文件开始位置(SEEK_SER)起的第0字节

-这个程序比较奇怪,明明打开文件时选用了0_WRONLY参数,表明这个打开是只写的,但上来就读

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
lseek函数是Linux中用于设置文件偏移量的函数。它可以用来改变当前文件读写位置,以便于后续的读写操作。 Lseek函数的原型如下: `off_t lseek(int fd, off_t offset, int whence);` 参数fd是文件描述符,用于指定要操作的文件。offset是要设置的文件偏移量值,可以是正数、负数或者0。whence参数用于指定文件偏移量的相对位置,有三个可能的取值: - SEEK_SET: 设置文件偏移量为距离文件起始位置offset字节处。 - SEEK_CUR: 设置文件偏移量为当前位置加上offset字节。 - SEEK_END: 设置文件偏移量为文件末尾位置加上offset字节。 lseek函数成功调用时返回新的文件偏移量。如果调用失败则返回-1,并设置errno来指示具体的错误原因。 使用lseek函数可以在文件中任意位置进行读写操作。比如,我们可以使用lseek函数将文件指针设置在文件末尾,然后通过写操作往文件中追加数据。另外,lseek函数也常用于随机读取文件的某个位置的数据。 需要注意的是,lseek函数只对具有支持随机访问的文件起作用,例如普通文件。而对于不支持随机访问的文件,比如管道或者网络套接字,lseek函数将会返回错误。此外,某些特殊文件系统(比如proc文件系统)可能不支持设置文件偏移量,对于这些文件系统,lseek函数同样会返回错误。 总之,lseek函数是Linux中一个强大而有用的函数,可以帮助我们操作文件的读写位置,进而实现更为灵活和复杂的文件操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值