在函数名pwrite和pread中,p代表什么意思?

6

我正在尝试学习Linux API,但是一些函数名称(至少对我来说)似乎很繁琐。

有人能解释一下pwrite / pread中的首字母p代表什么吗?


7
这是POSIX的前缀(与标准C库函数fread和fwrite相对)。 - Adriano Repetti
3
@Adriano 中的 p 代表“position”,因为 pread 从给定位置读取数据。如果 p 代表 POSIX,那么为什么其他无数的 POSIX 函数没有这个前缀呢? - P.P
3
**p**是一个魔法词,意思是“请”。如果标准函数func()返回错误,请尝试调用pfunc()变体。 :P - TheCodeArtist
https://www.youtube.com/watch?v=6t6k9tehlv4 - user1095108
2个回答

12

我只是猜测,但由于pread()pwrite()在文件中读取或写入指定的位置,我认为这里的“p”代表“定位”,也就是“定位读取”。

无论是read()还是pread()都是POSIX标准的一部分(例如参见http://www.unix.com/man-page/POSIX/3posix/pread/),因此我不认为“p”代表“POSIX”。

但也许我的想法完全错误!


让p“位置”的话,我完全赞同 :) - Nominal Animal
@NominalAnimal:谢谢您的建议,听起来更好! - Martin R
+1 我一直认为 "p" 代表 POSIX,以区别于它们的 "标准" 对应物(如 pthreads...),但这听起来更好!!! - Adriano Repetti
1
@meaning-matters:是的,perror() 是位置错误() :-) - OP 现在可能完全困惑了! - Martin R
1
@RioWing:pthread确实代表“POSIX线程” - Martin R
显示剩余2条评论

1

p在pread和pwrite中指的是POSIX

与读和写相比,“p”变体的两个区别是:

  • “p”变体接受要从其读取的偏移量,因此它们独立于当前文件指针。这使得可以更轻松地从多个线程并发地读取/写入。
  • “p”变体仅适用于可定位文件(即真实文件,而不是管道、套接字或设备)。

3
请提供英文原文以便翻译。 - mtvec
1
POSIXpread()pwrite() - This isn't my real name
pread()函数应当等同于read(),除了它可以在不改变文件指针的情况下从给定位置读取文件。pread()的前三个参数与read()相同,但增加了第四个参数offset,用于指定文件中所需读取的位置。如果尝试对无法寻址的文件执行pread()操作,则会导致错误。 - This isn't my real name
pwrite()函数与write()函数等效,除了它写入给定位置并且不改变文件偏移量(无论是否设置O_APPEND)。pwrite()的前三个参数与write()相同,另外还有第四个参数offset表示所需写入文件中的位置。在无法寻找的文件上执行pwrite()的尝试将导致错误。 - This isn't my real name

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接