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;

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • bp神经网络应用实例(简述bp神经网络)

    原理clear;clc;TestSamNum=20;%学习样本数量ForcastSamNum=2;%预测样本数量HiddenUnitNum=8;%隐含层InDim=3;%输入层OutDim=2;…

    2022年4月15日
    140
  • stimulsoft mvc html,asp.net mvc – stimulsoft report mvc kill session – Stack Overflow

    stimulsoft mvc html,asp.net mvc – stimulsoft report mvc kill session – Stack OverflowIusestimulssoftreportmvcforgeneratingareportinanasp.netwebsite.Thereportgeneratesfinein”local”butwhenthesiteisuploadedtoaserverandareportisgeneratedtheuser’ssessionh…

    2022年7月15日
    21
  • 秒杀多线程第四篇 一个经典的多线程同步问题

    秒杀多线程第四篇 一个经典的多线程同步问题

    2021年12月8日
    38
  • 实现一个单向链表_java链表添加

    实现一个单向链表_java链表添加链表是常用的一种数据结构,如何创建链表、增、删、查找等功能是本文讨论的内容。首先,链表需要两个指针,一个是头指针是固定不变的,一个是移动变化的指针。(1)为什么要头指针?原因是单向列表中的数据结构包含的只有下一个数据的指针,这样就说明了,单向链表是不可逆向进行操作。所有的操作都需要正向去操作。这时我们必须要知道第一个数据的地址,才能从第一个数据往后访问其他数据。(2)可移动的指针的作用有两个,一个…

    2025年7月25日
    2
  • AutoEventWireup

    AutoEventWireup
      Google了一番,大家讨论AutoEventWireup问题可不少,Page指令的AutoEventWireup属性被设置为true(或者如果缺少此属性,因为它默认为true),该页框架将自动调用页事件,即Page_Init、Page_Load等14个方法,在这种情况下,不需要任何显式的Handles子句或委托。但这是怎么实现的呢?.net又怎样根据AutoEventWireup属性来动态编译或者预编译页面呢?我在Google上没有找到答案。
     

    2022年5月28日
    36
  • request对象、response对象、session对象

    request对象、response对象、session对象仅仅是一些简单知识点的罗列,当做笔记,想具体学习的话,还是要找专业的书籍看看request对象作用:获取用户提供的信息语法:是实现了ServletRequest接口类的一个实例使用表单向服务器的某个JSP页面提交信息常用方法:设置编码方式:例如(用来防止汉字乱码)request.setCharacterEncoding(“gb2312”);同效果:Stringstr=r…

    2022年6月9日
    31

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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