C p在函数名pwrite和pread中代表什么?

C p在函数名pwrite和pread中代表什么?,c,linux,C,Linux,我正在尝试学习LinuxAPI,但有些函数名看起来(至少对我来说)很麻烦 谁能解释一下pwrite/pread中的首字母p代表什么吗?p在pread和pwrite中指的是什么 “p”变体与读写变体的两个区别是: “p”变量采用偏移量进行读取,因此它们独立于当前文件指针。这使得同时从多个线程读/写更容易 “p”变体仅适用于可查找的文件(即真实文件,而不是管道、套接字或设备) 我只是在猜测,但是由于pread()和pwrite()在文件中的指定位置读取或写入,我假设“p”代表“位置”,就像“位置读

我正在尝试学习LinuxAPI,但有些函数名看起来(至少对我来说)很麻烦


谁能解释一下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相关联。有关详细信息,请参阅