单片机学习24day内核同步机制fcntl_第1页
单片机学习24day内核同步机制fcntl_第2页
单片机学习24day内核同步机制fcntl_第3页
单片机学习24day内核同步机制fcntl_第4页
单片机学习24day内核同步机制fcntl_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

linuxfcntl()函数#includeintfcntl(intfd,intintfcntl(intfd,intcmd,longintfcntl(intfd,intcmd,structflock*lock);Fcntl()针对(文件)fdcmd(如下面的描述)cmd,fcntlintargcmd ·如果对象是文件(file)arg fdclose-on-execFD_CLOEXECFD_CLOEXEC0exec()exec(arg被忽略) close-on-execargFD_CLOEXEC O_APPEND,O_NONBLOCK,O_SYNCO_ASYNC F_SETOWN设置将接收SIGIOSIGURGidid,进程组idargargid O_DIRECTreadingwriting I/OSIGIOF_SETFDF_SETFLfcntl1,如果成功则返回某:F_DUPFD,F_GETFD,F_GETFLF_GETOWN。第一个返回新的文件描述符,第二个返回相应标志,最后一个返回一个正的进程IDID。 arg(flock)取得第一个阻lockdescriptionfcntl()flock息。如果没有发现能够本次锁(flock)生成的锁,这个结构将不被改变,除非锁的F_UNLCK.F_STLK flokagsegent锁。_SETLK(或读锁(F_RLCK)或独占()锁(F_RLCK)(F_UNLC),fcntl)回EGAIN. F_SETLK是一样的。如果共享锁或独占锁被其他的锁阻塞,进程将等待直到这个请求能够完成。当fcntl()正在等待文件的某个区域的时候捕捉到一个信号,如果这个信号没有 tl将被中断。setset个段或这个段的一部分。共享所任何其他进程set独占锁到这段保护区域的任何部分。如果文件描述符没有以读的方式打开的话,共享锁的设置请求会失败独占锁任何其他的进程在这段保护区域任何位置设置共享锁或独占锁。如果文struct{shortintl_type;/*shortintl_whence;/*l_start*/off_tl_start;/*锁定区域的开头位置*/off_tl_len;/*锁定区域的大小*/pid_tl_pid;/*锁定动作的进程l_typeF_RDLCK建立一个 F_WRLCKF_UNLCK删除之前建立的锁定l_whence也有三种方式:SEEK_SET以文件开头为锁定的起始位置。SEEK_CURSEEK_END以文件结尾为锁定的起始位置。 成功则返回0,若有错误则返回-1,错误原因存于errno.fcntl文件锁有两种类型:建议性锁和强制性锁释放该锁之前,内核会任何对该文件的读或写,每次读或写都得检查锁是否fcntlPOSIXmount0mandset-GIDcooperatingprocessescooperatingprocesscooperatingprocesses;catfile|sort,catsortpipecooperatingprocesses使用fcntl文件锁进行I/O操作必须:进程在开始任何I/O操作前如何去处理锁,在对文件前如何完成所有的操作,是必须考虑的。如果在设置锁之前打开文件,或者该锁之后关闭文件,另一个进程就可能在上锁/操作和打开/关闭操作之间的几分之一秒内该文件。当一个进程对文件加锁后,无论它是否释放所加的锁,只要文别),所以不要想设置建议性锁来达到永久不让别的进程文件的目的(强制性锁才可fcntlF_SETLK/F_SETLKW,F_UNLCKF_GETLK,来分别要求、释recordlocks,recordlocks的控制使得进程更好地协作以共享文件资源。fcntl能够用于锁和写入锁,readlocksharedlock(共享锁)cooperatingprocess立锁;writelock被称为exclusivelock(排斥锁),因为任何时刻只能有一个cooperatingprocesscooperatingprocessesreadlockcoop

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论