编程中一些比较重要的结构体
1.struct file_operations
struct file_operations
{struct module *owner;//标示模块拥有者loff_t (*llseek) (struct file *, loff_t, int); //loff_t是一个64位长偏移数,llseek方法标示当前文件的操作位置ssize_t (*read) (struct file *, char __user *, size_t, loff_t *);//ssize_t标示当前平台的固有整数类型。read是读函数ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *); //写函数ssize_t (*aio_read) (struct kiocb *, const struct iovec *, unsigned long, loff_t);ssize_t (*aio_write) (struct kiocb *, const struct iovec *, unsigned long, loff_t);ssize_t (*read_iter) (struct kiocb *, struct iov_iter *);ssize_t (*write_iter) (struct kiocb *, struct iov_iter *);int (*iterate) (struct file *, struct dir_context *);unsigned int (*poll) (struct file *, struct poll_table_struct *);//该方法用于查询设备是否可读可写或者处于某种状态。当设备不可读写时它们可以被阻塞直至设备变为可读写。如果驱动程序中没有定义该方法则它驱动的设备就会被认为是可读写的。long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long);//ioctl是一个系统调用,他提供一个执行设备特定命令的方法long (*compat_ioctl) (struct file *, unsigned int, unsigned long);int (*mmap) (struct file *, struct vm_area_struct *);//该方法请求把设备内存映射到进程地址空间int (*open) (struct inode *, struct file *);//打开设备文件,它往往是设备文件执行的第一个操作int (*flush) (struct file *, fl_owner_t id);//进程在关闭设备描述符副本之前会调用该方法,它会执行设备上尚未完成的操作int (*release) (struct inode *, struct file *);//当file 结构被释放时就会调用该方法int (*fsync) (struct file *, loff_t, loff_t, int datasync);//该方法用来刷新待处理的数据int (*aio_fsync) (struct kiocb *, int datasync);//int (*fasync) (int, struct file *, int);//即异步通知它是比较高级功能int (*lock) (struct file *, int, struct file_lock *);//该方法用来实现文件锁定ssize_t (*sendpage) (struct file *, struct page *, int, size_t, loff_t *, int);unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long);int (*check_flags)(int);int (*flock) (struct file *, int, struct file_lock *);ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int);ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int);int (*setlease)(struct file *, long, struct file_lock **, void **);long (*fallocate)(struct file *file, int mode, loff_t offset,loff_t len);int (*show_fdinfo)(struct seq_file *m, struct file *f);
};
2.struct socket
struct socket
{ socket_state state; unsigned long flags; const struct proto_ops *ops; struct fasync_struct *fasync_list; struct file *file; struct sock *sk; wait_queue_head_t wait; short type;
}; 3.ioctl /* include/linux/sockios.h *//* Socket configuration controls. */#define SIOCGIFNAME 0x8910 /* get iface name */#define SIOCSIFLINK 0x8911 /* set iface channel */#define SIOCGIFCONF 0x8912 /* get iface list */#define SIOCGIFFLAGS 0x8913 /* get flags */#define SIOCSIFFLAGS 0x8914 /* set flags */#define SIOCGIFADDR 0x8915 /* get PA address */#define SIOCSIFADDR 0x8916 /* set PA address */#define SIOCGIFDSTADDR 0x8917 /* get remote PA address */#define SIOCSIFDSTADDR 0x8918 /* set remote PA address */#define SIOCGIFBRDADDR 0x8919 /* get broadcast PA address*/#define SIOCSIFBRDADDR 0x891a /* set broadcast PA address*/#define SIOCGIFNETMASK 0x891b /* get network PA mask */#define SIOCSIFNETMASK 0x891c /* set network PA mask */#define SIOCGIFMETRIC 0x891d /* get metric */#define SIOCSIFMETRIC 0x891e /* set metric */#define SIOCGIFMEM 0x891f /* get memory address (BSD)*/#define SIOCSIFMEM 0x8920 /* set memory address (BSD)*/#define SIOCGIFMTU 0x8921 /* get MTU size */#define SIOCSIFMTU 0x8922 /* set MTU size */#define SIOCSIFNAME 0x8923 /* set interface name */#define SIOCSIFHWADDR 0x8924 /* set hardware address */#define SIOCGIFENCAP 0x8925 /* get/set encapsulations */#define SIOCSIFENCAP 0x8926 #define SIOCGIFHWADDR 0x8927 /* Get hardware address */#define SIOCGIFSLAVE 0x8929 /* Driver slaving support */#define SIOCSIFSLAVE 0x8930#define SIOCADDMULTI 0x8931 /* Multicast address lists */#define SIOCDELMULTI 0x8932 #define SIOCGIFINDEX 0x8933 /* name -> if_index mapping */ #define SIOCSIFPFLAGS 0x8934 /* set/get extended flags set */#define SIOCGIFPFLAGS 0x8935#define SIOCDIFADDR 0x8936 /* delete PA address */#define SIOCSIFHWBROADCAST 0x8937 /* set hardware broadcast addr*/#define SIOCGIFCOUNT 0x8938 /* get number of devices */...#define SIOCETHTOOL 0x8946 /* Ethtool interface */ 4.struct statstruct stat
{mode_t st_mode; //文件对应的模式,文件,目录等ino_t st_ino; //inode节点号dev_t st_dev; //设备号码dev_t st_rdev; //特殊设备号码nlink_t st_nlink; //文件的连接数uid_t st_uid; //文件所有者gid_t st_gid; //文件所有者对应的组off_t st_size; //普通文件,对应的文件字节数time_t st_atime; //文件最后被访问的时间time_t st_mtime; //文件内容最后被修改的时间time_t st_ctime; //文件状态改变时间blksize_t st_blksize; //文件内容对应的块大小blkcnt_t st_blocks; //文件内容对应的块数量
};5.struct hostent
struct hostent
{char *h_name; //主机的规范名 char **h_aliases; //主机的别名int h_addrtype; //主机ip地址的类型int h_length; //主机ip地址的长度char **h_addr_list; //网络字节序存储的主机IP地址#define h_addr h_addr_list[0]};6.struct termios
#include <termios.h>
#include <unistd.h>
struct termios{tcflag_t c_iflag; 输入模式标志,控制终端输入方式tcflag_t c_oflag; 输出模式标志,控制终端输出方式tcflag_t c_cflag; 控制模式标志,指定终端硬件控制信息tcflag_t c_lflag; 本地模式标志,控制终端编辑功能cc_t c_cc(NCCS); 控制字符,用于保存中断驱动程序中的特殊字符,如输入借宿字符等。};
7.struct file
struct file
{int f_oflags; /* Open mode flags */FAR struct inode *f_inode; /* Driver interface */loff_t f_pos; /* File position */char *f_path; /* File fullpath */void *f_priv; /* Per file driver private data */const char *f_relpath; /* realpath */
};
编程中一些比较重要的结构体相关推荐
- linux socket结构,Linux C socket编程中几个常见的结构体定义
● sockaddr #include struct sockaddr { sa_family_t sa_family; char sa_data[14]; }; ● in_addr_t #inclu ...
- c语言结构体数组存入文件_关于从文件中读取数据并写入结构体数组
已结贴√ 问题点数:25 回复次数:10 关于从文件中读取数据并写入结构体数组 各位大大好,本人新手一枚,最近写简单的通讯录的c程序,其他功能完好,最后一个将txt文件中的数据写入结构体数组的函数无法 ...
- 【Struct(结构体)杂谈之三】借我一双慧眼吧,让我把C++中Class(类)和Struct(结构体)看个清清楚楚明明白白...
C++中Class(类)和Struct(结构体)的区别 之前一篇我们了解了C++中Struct的定义方法和C中有点不一样,而且增加了一种新的类型---Class.从 C++的名字我们就可以知道,C++ ...
- hal编程 gt911 触摸芯片驱动 ( 枚举 结构体 熟用)( 安富莱 f429 4.3寸电容屏 )
使用板子类型以及屏幕类型 本文使用的是安富莱的板子stm32f429, 屏幕是TR433C1的4.3寸TFT显示屏, 480*272 RGB接口, 电容触摸 . I2C I2C简介.原理.时序请看这篇 ...
- ios开发中的C语言学习—— 结构体简介
在开发过程中,经常会需要处理一组不同类型的数据,比如学生的个人信息,由姓名.年龄.性别.身高等组成,因为这些数据是由不同数据类型组成的,因此不能用数组表示,对于不同数据类型的一组数据,可以采用结构体来 ...
- 内核中用于数据接收的结构体struct msghdr
我们从一个实际的数据包发送的例子入手,来看看其发送的具体流程,以及过程中涉及到的相关数据结构.在我们的虚拟机上发送icmp回显请求包,ping另一台主机172.16.48.1.我们使用系统调用send ...
- 内核中用于数据接收的结构体struct msghdr以及iovec介绍
我们从一个实际的数据包发送的例子入手,来看看其发送的具体流程,以及过程中涉及到的相关数据结构.在我们的虚拟机上发送icmp回显请求包,ping另一台主机172.16.48.1.我们使用系统调用send ...
- Qt中的QByteArray和自定义结构体之间的相互转换
在Qt项目开发中,经常会碰到自定义结构体和字符数组之间的转换问题,不妨假设结构体名字为custom_struct, 字符数组名字为array_data 1. QByteArray转换为自定义结构体 c ...
- c语言结构体在内存中的存储,C语言结构体在内存中的存储情况探究------内存对齐...
条件(先看一下各个基本类型都占几个字节): voidsize_(){ printf("char类型:%d", sizeof(char)); printf("int类型:% ...
最新文章
- C++ Windows进程管理
- 如何合理的学习Netty?(学习目录)
- 自己启动spark集群的实验记录
- Leetcode69场双周赛-第一题5960:标题首字母大写
- C++ Primer 第五版 第7章类 7.1——类讲解(成员函数、非成员函数、构造函数)
- 1473. A + B 格式
- 面向对象设计——七大原则
- Oracle Rownum 伪列详解
- RocketMQ怎么保证队列顺序消费
- 一行代码即可删除C盘几十G垃圾,清理c盘垃圾的cmd命令
- mysql 外文翻译5000字_MySQL数据库管理外文翻译.doc
- 一分钟读懂马云在互联网大会的万字
- LBS计算两坐标的距离
- java设备未就绪_java.io.IOException: 设备未就绪。这个怎么解决?
- linux的su参数,linux su命令参数及用法详解
- C#中Math函数简介
- 2.k-均值(k-means)聚类算法
- java点到直线距离_求取点到直线的距离
- 如何在app应用中添加支付宝支付功能
- 台湾精锐APEX行星减速机行业应用案例
热门文章
- Adobe PR2023、Adobe premiere 2023安装、下载教程
- 成人高考函授是全日制还是非全日制
- WindowsXP下安装IntelliJ IDEA Ultimate Edition
- 2-1 李宏毅2021春季机器学习教程-第二节机器学习任务攻略
- 简单Chrome脚本 自动跳过b站视频播放结束后的的充电鸣谢页面
- 利用.htacess来防止恶意登录和SQL注入攻击!
- 正数、负数、和小数正则表达式 ios_最常用正则表达式,你要的都在这里了
- 【leetcode】最长回文子串(区间dp)
- 通过经纬度判断两点的距离 并做离我最近排序
- 谈“堆栈”与“队列”的认识