fcntl和ioctl_Liverpool fc

fcntl和ioctl_Liverpool fc一、fcntlfcntl函数用于执行各种描述符控制操作;/*返回值:成功取决于cmd,失败返回-1;*定义:*/#includeintfcntl(intsockfd,intcmd,/*intarg*/);/*说明:*第三个参数可有可没有,根据需要给出;*/函数有下面5种功能:复制一个现有的描述符(cmd=F_DUPFD);获得/

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

一、fcntl

fcntl 函数用于执行各种描述符控制操作;

/* 返回值:成功取决于cmd,失败返回-1; * 定义: */
#include <fcntl.h>
int fcntl(int sockfd, int cmd, /* int arg */);
/* 说明: * 第三个参数可有可没有,根据需要给出; */

Jetbrains全家桶1年46,售后保障稳定

函数有下面5种功能:

  • 复制一个现有的描述符(cmd=F_DUPFD);
  • 获得/设置文件描述符标记(cmd=F_GETFD或F_SETFD);
  • 获得/设置文件状态标记(cmd=F_GETFL或F_SETFL);
  • 获得/设置异步I/O所有权(cmd=F_GETOWN或F_SETOWN);
  • 获得/设置记录锁(cmd=F_GETLK , F_SETLK或F_SETLKW);

这里介绍如何将描述符设置为非阻塞的方法;

flags = fcntl(fd, F_GETFL, 0);
fcntl(fd, F_SETFL, flags | O_NONBLOCK);
/* 通过fcntl获取当前描述符fd的文件状态标记, * 然后将之与非阻塞标志O_NONBLOCK进行或操作再进行设置; */

其他功能详细介绍参考:fcntl函数详解

二、ioctl

ioctl函数一些功能与fcntl函数是重叠的,主要功能为影响由参数fd打开的文件。

/* 返回值:成功返回0,出错返回-1;*/
#include <unistd.h>
int ioctl(int fd, int request, /* void *arg */);
/* 说明: * fd为描述符,request为执行操作参数,由一系列定义的宏来决定,arg为一个指针, * 类型由request决定; */

ioctl与网络相关的请求可以划分为6类:

  • 套接口操作
  • 文件操作
  • 接口操作
  • ARP 高速缓存操作
  • 路由表操作
  • 流系统

对于每一种操作,都有几个不同的功能参数,这里不详细介绍,具体参考:ioctl用法详解;或UNIX网络编程卷1 :套接字联网API;

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/226889.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • java 二维数组 数据库_java 二维数组如何存入数据库

    java 二维数组 数据库_java 二维数组如何存入数据库usingSystem;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Xml;usingSystem.Xml.Serialization;usingSystem.IO;namespaceWindowsFormsApplication1{publicpartialclassForm…

  • mybatis 数据权限插件_mybatis查询大量数据

    mybatis 数据权限插件_mybatis查询大量数据数据权限管理中心由于公司大部分项目都是使用mybatis,也是使用mybatis的拦截器进行分页处理,所以技术上也直接选择从拦截器入手需求场景第一种场景:行级数据处理原sql:selectid,username,regionfromsys_user;需要封装成:select*from(selectid,username,regionfromsys_user)wh…

  • SpringBoot整合JDBC、整合Druid数据源详解教程

    SpringBoot整合JDBC、整合Druid数据源详解教程目录一、整合JDBC1.环境准备1.创建数据库2.创建SpringBoot项目3.IDEA连接数据库2.编写数据库配置信息3.编写测试类测试4.CRUD操作数据库1.JDBCTemplate简介2.CRUD测试二、整合Druid数据源1.Druid简介2.部分基本配置参数3.使用Durid数据源1.导入依赖2.切换数据源3.设置数据源属性4.使添加属性生效5.配置Druid后台监控Servlet6.配置Druid监控过滤器filter一、整合JDBC1.环境准备.

  • Maven私库安装与配置

    Maven私库安装与配置前言项目开发时,一般采用Maven来进行项目构建,管理,jar包下载,项目组开发人员开发时,只要在项目的pom.xml文件中,添加如下pom.xml信息从公共的库中下载相关的Jar包以及依赖Jar包,但有时候公共的库不是那么稳定而且下载速度往往很慢,一个团队一起开发项目时,如果每个组员都去下载一遍所有依赖的Jar包,其实是一件很麻烦的事情,所以这时候就有必要搭建一个Maven的私库了,这样

  • Copy Rounting (BAPI:BAPI_ROUTING_CREATE)

    Copy Rounting (BAPI:BAPI_ROUTING_CREATE)FORMfrm_uploadUSINGvalue(ps_i_tabindex)LIKEsy-tabixvalue(pc_i_fieldname)TYPEslis_fieldnameCHANGING

  • curl源码编译安装

    curl源码编译安装平台:Ubuntu20方法一:apt-get使用内置的apt下载工具进行安装,sudoapt-getinstallcurl方法二:从官网下载压缩包在官网可以找到curl的多个版本,http://curl.haxx.se/download/wgethttps://curl.haxx.se/download/curl-7.55.1.tar.gztar-xzvfcurl-7.55.1.tar.gzcdcurl-7.55.1./configurema

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号