Linux网络编程--文件属性fcntl函数

2024-05-08 21:48

本文主要是介绍Linux网络编程--文件属性fcntl函数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这里写图片描述

/*使用fcntl控制文件符*/
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>int main(void)
{int flags = -1;int accmode = -1;/*获得标准输入的状态的状态*/flags = fcntl(0, F_GETFL, 0);if( flags < 0 ){/*错误发生*/printf("failure to use fcntl\n");return -1;}/*获得访问模式*/accmode = flags & O_ACCMODE;  if(accmode == O_RDONLY)/*只读*/printf("STDIN READ ONLY\n");else if(accmode == O_WRONLY)/*只写*/printf("STDIN WRITE ONLY\n");else if(accmode ==O_RDWR)/*可读写*/printf("STDIN READ WRITE\n");else/*其他模式*/printf("STDIN UNKNOWN MODE");if( flags & O_APPEND )printf("STDIN APPEND\n");if( flags & O_NONBLOCK )printf("STDIN NONBLOCK\n");return 0;
}

这里写图片描述

例子一:使用函数int fcntl(int fd,int cmd);返回值为新的文件描述符/*使用fcntl修改文件的状态值*/
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
#include <string.h>/*strlen函数*/#define NEWFD 8
int main(void)
{char buf[] = "FCNTL";int fd = open("test.txt", O_RDWR);printf("the file test.txt ID is %d\n",fd);/*获得文件状态*/  fd = fcntl(fd, F_GETFD);printf("the file test.txt ID is %d\n",fd);fd = NEWFD;/*将状态写入*/fcntl(NEWFD, F_SETFL, &fd);/*向文件中写入字符串*/write(NEWFD, buf, strlen(buf));close(NEWFD);return 0;
}例子二:使用函数int fcntl(int fd,int cmd,long arg);返回值为获得的响应标志位
/*使用fcntl修改文件的状态值*/
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
#include <string.h>/*strlen函数*/int main(void)
{int flags = -1;char buf[] = "FCNTL";int fd = open("test.txt", O_RDWR);/*获得文件状态*/  flags = fcntl(fd, F_GETFL, 0);/*增加状态为可追加*/flags |= O_APPEND;/*将状态写入*/flags = fcntl(fd, F_SETFL, &flags);if( flags < 0 ){/*错误发生*/printf("failure to use fcntl\n");return -1;}/*向文件中写入字符串*/write(fd, buf, strlen(buf));close(fd);return 0;
}

/*使用fcntl获得接收信号的进程ID*/
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>#define NEWFD 8
int main(void)
{int uid;    /*打开文件test.txt*/int fd = open("test.txt", O_RDWR);/*获得接收信号的进程ID*/ uid = fcntl(fd, F_GETOWN);printf("the SIG recv ID is %d\n",uid);close(fd);return 0;
}

这里写图片描述

/*使用fcntl设置接收信号的进程ID:1000*/
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>#define NEWFD 8
int main(void)
{int uid;    /*打开文件test.txt*/int fd = open("test.txt", O_RDWR);  /*获得接收信号的进程ID*/ uid = fcntl(fd, F_SETOWN,1000); close(fd);  return 0;
}

这篇关于Linux网络编程--文件属性fcntl函数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/971533

相关文章

Linux线程同步/互斥过程详解

《Linux线程同步/互斥过程详解》文章讲解多线程并发访问导致竞态条件,需通过互斥锁、原子操作和条件变量实现线程安全与同步,分析死锁条件及避免方法,并介绍RAII封装技术提升资源管理效率... 目录01. 资源共享问题1.1 多线程并发访问1.2 临界区与临界资源1.3 锁的引入02. 多线程案例2.1 为

MySQL常用字符串函数示例和场景介绍

《MySQL常用字符串函数示例和场景介绍》MySQL提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析,本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练... 目录一、字符串函数概述1.1 字符串函数的作用1.2 字符串函数分类二、字符串长度与统计函数2.1

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结

Linux如何查看文件权限的命令

《Linux如何查看文件权限的命令》Linux中使用ls-R命令递归查看指定目录及子目录下所有文件和文件夹的权限信息,以列表形式展示权限位、所有者、组等详细内容... 目录linux China编程查看文件权限命令输出结果示例这里是查看tomcat文件夹总结Linux 查看文件权限命令ls -l 文件或文件夹

idea的终端(Terminal)cmd的命令换成linux的命令详解

《idea的终端(Terminal)cmd的命令换成linux的命令详解》本文介绍IDEA配置Git的步骤:安装Git、修改终端设置并重启IDEA,强调顺序,作为个人经验分享,希望提供参考并支持脚本之... 目录一编程、设置前二、前置条件三、android设置四、设置后总结一、php设置前二、前置条件

python使用try函数详解

《python使用try函数详解》Pythontry语句用于异常处理,支持捕获特定/多种异常、else/final子句确保资源释放,结合with语句自动清理,可自定义异常及嵌套结构,灵活应对错误场景... 目录try 函数的基本语法捕获特定异常捕获多个异常使用 else 子句使用 finally 子句捕获所

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方

Linux系统之lvcreate命令使用解读

《Linux系统之lvcreate命令使用解读》lvcreate是LVM中创建逻辑卷的核心命令,支持线性、条带化、RAID、镜像、快照、瘦池和缓存池等多种类型,实现灵活存储资源管理,需注意空间分配、R... 目录lvcreate命令详解一、命令概述二、语法格式三、核心功能四、选项详解五、使用示例1. 创建逻

Linux下在线安装启动VNC教程

《Linux下在线安装启动VNC教程》本文指导在CentOS7上在线安装VNC,包含安装、配置密码、启动/停止、清理重启步骤及注意事项,强调需安装VNC桌面以避免黑屏,并解决端口冲突和目录权限问题... 目录描述安装VNC安装 VNC 桌面可能遇到的问题总结描js述linux中的VNC就类似于Window

linux下shell脚本启动jar包实现过程

《linux下shell脚本启动jar包实现过程》确保APP_NAME和LOG_FILE位于目录内,首次启动前需手动创建log文件夹,否则报错,此为个人经验,供参考,欢迎支持脚本之家... 目录linux下shell脚本启动jar包样例1样例2总结linux下shell脚本启动jar包样例1#!/bin