当前位置:  技术问答>linux和unix

【疑问求助】lseek函数和pwrite函数《APUE》

    来源: 互联网  发布时间:2017-05-09

    本文导语:  pwrite是atomic operation的产物 操作1.对于单进程操作来先调用lseek 然后调用write 操作2.直接调用pwrite APUE上说是等价的,只要操作1在调用lseek和write之间,不被打断,1,2就是等价的 原话: Calling pread is  equivalent  to ...

pwrite是atomic operation的产物
操作1.对于单进程操作来先调用lseek 然后调用write
操作2.直接调用pwrite
APUE上说是等价的,只要操作1在调用lseek和write之间,不被打断,1,2就是等价的
原话:
Calling pread is  equivalent  to  calling lseek followed  by  a  call  to read,with  the
following exceptions.
 •There is no way to interrupt the two operations that occur when we call pread.
 •The current file offset is not updated. 

Calling pwrite is equivalent to calling lseek followed by a call to write,with similar
exceptions.

In general, the term atomic operation refers to an operation that might be composed
of  multiple  steps. If  the  operation  is  performed  atomically ,either  all  the  steps  are performed (on success) or none are performed (on failure).  

APUE没有给出示例代码
我自己练习时候发现了问题
ssize_t pwrite(int fd ,const void *buf,size_tnbytes ,off_t offset);
这个是pwrite的原型
观察,最后一个参数,offset,这个变量怎么得到呢?除了lseek返回offset还能怎样
但是pwrite从逻辑上讲又是lseek+write
这个时候是没有offset参数来源的,必须在pwrite之前调用一个lseek得到当前offset,以此来作为pwrite的参数
但是问题来了,如果这样调用的话,那么pwrite就显得很没意义,因为都是lseek+write或则lseek+pwrite
pwrite反而显得多此一举了

渣渣愚昧,恳请大神明示

|
$man pwrite
........
pwrite() writes up to count bytes from the buffer starting at buf to the file descriptor fd at offset offset.  
The file offset is not changed.
............

    
 
 

您可能感兴趣的文章:

  • 线程函数私有数据的疑问
  • linux exec函数族疑问
  • 函数ts_timers_handler()的疑问
  • javascript开源软件 iis7站长之家
  • 对recv函数第四个参数置0的疑问
  • 关于open函数的疑问.
  • 关于getaddrinfo函数的疑问
  • socket send函数疑问,缓冲区
  • 关于系统信号处理函数signal()的疑问.
  • 关于exit函数,参数值的疑问
  • fread函数的疑问。。
  • 关于fseek函数的疑问
  • 关于用rename函数移动文件到另一目录的疑问.
  • 中断处理函数中使用自旋锁的疑问
  • lockf函数的疑问?
  • Open函数的inode疑问
  • select函数疑问
  • bind函数客户端使用疑问?求解
  • linux 下 usb 鼠标驱动 关于 open 函数里面 mouse->irq->dev = mouse->usbdev 疑问
  • linux中信号signal函数实例遇到的疑问
  • 求助,libpcab抓包疑问
  • 求助:初学者对“Run Program”的疑问?
  • 求助关于linux系统下wine环境的疑问?
  • linux新手的诸多疑问,向高手求助了!(给出我能给的最高分数!)
  • 求助!关于linux内核0.11版本进程睡眠调度的疑问?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 关于java.util.EventObject的疑问?和abstract ,interface关键字的疑问?
  • 菜鸟的Linux练习疑问……
  • Linux文件系统结构的疑问
  • linux C编程中使用make时对 内部规则的疑问
  • 日志文件的疑问,请教
  • iptables的默认策略与accept的疑问
  • Linux 初学者的疑问 (各位老鸟进来看看)
  • ubuntu 10.10 安装的疑问
  • 多线程编程下关于gdb程序调试的一个疑问。
  • 操作系统为进程(程序)提供服务的疑问
  • 关于linux runlevel的疑问
  • 一个shell 的疑问!!!!
  • 关于jdbc的疑问?
  • 关于substring方法的疑问
  • 文件上传的疑问?
  • linux下gcc使用疑问?
  • GTK+2.0疑问,急
  • 配置FTP服务器一些疑问?
  • 能解答很多人疑问的好东西.
  • 消息队列的疑问2则


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,