当前位置: 首页 > news >正文

wordpress价格表单/2022年百度seo

wordpress价格表单,2022年百度seo,公司 网站 源码,做网站对企业的好处通俗易懂说多路复用(4)fcntl1. fcntl()1.1 功能:1.2 fcntl 的三个接口,三种操作1.3 返回值1.4 cntl函数有5种功能:1.4.1. 复制一个现有的描述符(cmdF_DUPFD).1.4.2. 获得/设置文件描述符标记(cmdF_GETFD或F…

通俗易懂说多路复用(4)fcntl

  • 1. fcntl()
    • 1.1 功能:
    • 1.2 fcntl 的三个接口,三种操作
    • 1.3 返回值
    • 1.4 cntl函数有5种功能:
      • 1.4.1. 复制一个现有的描述符(cmd=F_DUPFD).
      • 1.4.2. 获得/设置文件描述符标记(cmd=F_GETFD或F_SETFD). 及代码使用
      • 1.4.3. 获得/设置文件状态标记(cmd=F_GETFL或F_SETFL).
      • 1.4.4. 获得/设置异步I/O所有权(cmd=F_GETOWN或F_SETOWN).
      • 1.4.5. 获得/设置记录锁(cmd=F_GETLK , F_SETLK或F_SETLKW).
  • 2. 代码例子
    • 2.1 代码例子 F_GETFD 和 F_SETFD
    • 2.2 解释
  • 参考:

多路复用系列:
通俗易懂说多路复用(1)select
https://blog.csdn.net/lqy971966/article/details/89173936
通俗易懂说多路复用(2)epoll
https://blog.csdn.net/lqy971966/article/details/89217648
通俗易懂说多路复用(3)eventfd 事件通知
https://blog.csdn.net/lqy971966/article/details/104751751
通俗易懂说多路复用(4)fcntl
https://blog.csdn.net/lqy971966/article/details/105390106

1. fcntl()

1.1 功能:

根据文件描述词来操作文件的特性。

1.2 fcntl 的三个接口,三种操作

#include <unistd.h>
#include <fcntl.h> 
int fcntl(int fd, int cmd); 
int fcntl(int fd, int cmd, long arg); 
int fcntl(int fd, int cmd, struct flock *lock);

1.3 返回值

fcntl()的返回值与命令有关。如果出错,所有命令都返回-1,如果成功则返回某个其他值。下列三个命令有特定返回值:F_DUPFD , F_GETFD , F_GETFL以及F_GETOWN。
F_DUPFD 返回新的文件描述符
F_GETFD 返回相应标志
F_GETFL , F_GETOWN 返回一个正的进程ID或负的进程组ID

1.4 cntl函数有5种功能:

1.4.1. 复制一个现有的描述符(cmd=F_DUPFD).

1.4.2. 获得/设置文件描述符标记(cmd=F_GETFD或F_SETFD). 及代码使用

F_GETFD 取得与文件描述符fd联合的close-on-exec标志,类似FD_CLOEXEC。如果返回值和FD_CLOEXEC进行与运算结果是0的话,文件保持交叉式访问exec(),否则如果通过exec运行的话,文件将被关闭(arg 被忽略)
F_SETFD 设置close-on-exec标志,该标志以参数arg的FD_CLOEXEC位决定,应当了解很多现存的涉及文件描述符标志的程序并不使用常数 FD_CLOEXEC,而是将此标志设置为0(系统默认,在exec时不关闭)或1(在exec时关闭)

1.4.3. 获得/设置文件状态标记(cmd=F_GETFL或F_SETFL).

1.4.4. 获得/设置异步I/O所有权(cmd=F_GETOWN或F_SETOWN).

1.4.5. 获得/设置记录锁(cmd=F_GETLK , F_SETLK或F_SETLKW).

F_GETLK 通过第三个参数arg(一个指向flock的结构体)取得第一个阻塞lock description指向的锁。取得的信息将覆盖传到fcntl()的flock结构的信息。如果没有发现能够阻止本次锁(flock)生成的锁,这个结构将不被改变,除非锁的类型被设置成F_UNLCK
F_SETLK 按照指向结构体flock的指针的第三个参数arg所描述的锁的信息设置或者清除一个文件的segment锁。F_SETLK被用来实现共享(或读)锁(F_RDLCK)或独占(写)锁(F_WRLCK),同样可以去掉这两种锁(F_UNLCK)。如果共享锁或独占锁不能被设置,fcntl()将立即返回EAGAIN

结构体flock的指针

struct flcok 
{ short int l_type; /* 锁定的状态*///以下的三个参数用于分段对文件加锁,若对整个文件加锁,则:l_whence=SEEK_SET, l_start=0, l_len=0short int l_whence; /*决定l_start位置*/ off_t l_start; /*锁定区域的开头位置*/ off_t l_len; /*锁定区域的大小*/pid_t l_pid; /*锁定动作的进程*/ 
};
  1. l_type 有三种状态:
    F_RDLCK 建立一个供读取用的锁定
    F_WRLCK 建立一个供写入用的锁定
    F_UNLCK 删除之前建立的锁定

  2. l_whence 也有三种方式:
    SEEK_SET 以文件开头为锁定的起始位置
    SEEK_CUR 以目前文件读写位置为锁定的起始位置
    SEEK_END 以文件结尾为锁定的起始位置

fcntl文件锁有两种类型:建议性锁和强制性锁
系统默认fcntl都是建议性锁,强制性锁是非POSIX标准的。

2. 代码例子

2.1 代码例子 F_GETFD 和 F_SETFD

	int iEpfd = epoll_create(1);if(0>iEpfd){ return error;}iFlags = fcntl(iEpfd,F_GETFD);if(iFlags >= 0){iFlags |= FD_CLOEXEC; 	// 这个句柄我在fork子进程后执行exec时就关闭fcntl(iEpfd,F_SETFD,iFlags);}

2.2 解释

  1. 背景:
    fork子进程时,子进程以写时复制(COW,Copy-On-Write)
    方式获得父进程的数据空间、堆和栈副本,这其中也包括文件描述符

  2. 问题:
    当子进程调用exec执行另一个程序,此时会用全新的程序替换子进程的正文,数据,堆和栈等。
    此时保存文件描述符的变量当然也不存在了,我们就无法关闭无用的文件描述符了。
    不能关闭子进程继承过来的父进程的文件描述符

  3. 解决:
    通常我们会fork子进程后在子进程中直接执行close关掉无用的文件描述符,然后再执行exec

    但是在复杂系统中,有时我们fork子进程时已经不知道打开了多少个文件描述符(包括socket句柄等)
    这此时进行逐一清理确实有很大难度。

  4. 结果:
    在fork子进程前打开某个文件句柄时就指定好:“这个句柄我在fork子进程后执行exec时就关闭”。
    其实时有这样的方法的:即所谓的 close-on-exec
    close-on-exec 的实现只需要调用系统的fcntl就能实现,很简单几句代码就能实现。
    这样,当fork子进程后,仍然可以使用fd。但执行exec后系统就会字段关闭子进程中的fd了。

参考:

https://www.cnblogs.com/embedded-linux/p/6753617.html
https://www.cnblogs.com/alantu2018/p/8492206.html

http://www.lbrq.cn/news/1246501.html

相关文章:

  • 做网站一般图片多大/广告优化师发展前景
  • 网站做优化每天一定要更新/网站推广的四个阶段
  • 优质手机网站建设/网站推广多少钱
  • 如何让别人看到自己做的网站/怎么创建一个网址
  • 网站建设 推广 公司/镇江网站建设
  • 网站开发藏汉双语/百度搜索推广采取
  • 网站建设与制作企业/如何注册域名及网站
  • 做网站哪个平台好/朋友圈产品推广文案
  • 网站没有流量怎么回事/英文seo兼职
  • 长春网站建设网站源码/网络销售技巧和话术
  • 企业网站排名技巧/山东工艺美术学院网站建设公司
  • 如何做淘宝客网站/培训机构排名前十
  • vs2008做网站教程/推广产品
  • 玻璃钢产品哪个网站做推广好/贵阳百度seo点击软件
  • 个人主页网站模板/如何创建一个app
  • 安徽鹏华建设工程有限公司网站/qq群推广方法
  • .net 做手机网站吗/湖南网站seo公司
  • 安卓盒子做网站/做关键词优化的公司
  • 济南商城网站建设公司/网页制作软件手机版
  • 电子商务型网站/网络营销的三大核心
  • ks刷粉网站推广马上刷/安徽网络推广和优化
  • 润东电子科技 网站建设/济南网站建设哪家便宜
  • 网站注册用户推广/百度指数免费查询
  • wordpress测试/seo技术是干什么的
  • 深圳住房和建设局网站无法登陆/黑龙江新闻
  • asp技校网站/化妆品软文推广范文
  • 成都企业网站建设及公司ppt/宁波seo外包推广渠道
  • 德州公司做网站/关键词排名监控批量查询
  • 网站能不能用自己的电脑做服务器/网站快速收录入口
  • 朱能源做网站/百度seo怎么把关键词优化上去
  • 预测性维护之温振传感器选型与应用秘籍
  • python文件操作:读取文件内容read
  • HarmonyOS】鸿蒙应用开发中常用的三方库介绍和使用示例
  • 搭建 Mock 服务,实现前端自调
  • 【数据结构初阶】--二叉树(四)
  • SQL 怎么学?