C p在函数名pwrite和pread中代表什么?
我正在尝试学习LinuxAPI,但有些函数名看起来(至少对我来说)很麻烦C p在函数名pwrite和pread中代表什么?,c,linux,C,Linux,我正在尝试学习LinuxAPI,但有些函数名看起来(至少对我来说)很麻烦 谁能解释一下pwrite/pread中的首字母p代表什么吗?p在pread和pwrite中指的是什么 “p”变体与读写变体的两个区别是: “p”变量采用偏移量进行读取,因此它们独立于当前文件指针。这使得同时从多个线程读/写更容易 “p”变体仅适用于可查找的文件(即真实文件,而不是管道、套接字或设备) 我只是在猜测,但是由于pread()和pwrite()在文件中的指定位置读取或写入,我假设“p”代表“位置”,就像“位置读
谁能解释一下pwrite/pread中的首字母p代表什么吗?p在pread和pwrite中指的是什么 “p”变体与读写变体的两个区别是:
- “p”变量采用偏移量进行读取,因此它们独立于当前文件指针。这使得同时从多个线程读/写更容易
- “p”变体仅适用于可查找的文件(即真实文件,而不是管道、套接字或设备)
pread()
和pwrite()
在文件中的指定位置读取或写入,我假设“p”代表“位置”,就像“位置读取”一样
read()
和pread()
都是POSIX标准的一部分(参见示例),因此我不认为“p”代表“POSIX”
但也许这是完全错误的 它是POSIX的前缀(与标准C库函数fread和fwrite相反)。@Adriano
p
代表位置,因为pread从给定位置读取。如果p
代表POSIX,那么为什么其他无数POSIX函数没有这个前缀呢?p
是一个神奇的词。如果标准函数func()
返回错误,请尝试调用pfunc()
变量:PAnd提供一个参考。pread()
函数应等同于read()
,但它应在不改变文件指针的情况下从文件中的给定位置读取。pread()
的前三个参数与read()
相同,只是为文件中所需的位置添加了第四个参数偏移量。尝试对无法查找的文件执行pread()
将导致错误。pwrite()
函数应等同于write()
,但它写入到给定位置并且不更改文件偏移量(无论是否设置了O_APPEND)。pwrite()
的前三个参数与write()
相同,只是为文件中所需的位置添加了第四个参数偏移量。尝试对无法查找的文件执行pwrite()
将导致错误。将p设为“位置”,我完全同意:)@NominalAnimal:谢谢你的建议,听起来更好+1我一直认为“p”代表POSIX,以区别于它们的“标准”对应项(如pthreads…),但这听起来好多了@意思很重要:是的,perror()是位置错误():-)-OP现在可能完全糊涂了!POSIX.1-2001还定义了读取和写入一个或多个I/O向量(分散/聚集)的readv()
和writev()
;我把它读作向量。Linux和一些BSD还提供了preadv()
和pwritev()
,它们的工作方式与您预期的一样:从特定位置开始读取和写入一个或多个I/O向量(位置读取向量、位置写入向量)。这就是为什么我从未将p
前缀与POSIX相关联。有关详细信息,请参阅