typedef关键字
关键字作用
只是将已有的数据类型以一个新的类型名称存在。
typedef int DataType;
struct node_t
{
int no;
DataType data;
};
也可以使用宏定义给数据类型取别名
#define int DataType
注意:用宏定义取别名有时候可能会出错。
define int* INTPTR
INTPTR p,q;// 替换之后,其实就定义了一个int* p, int q; 没有达到预期的效果。
跨平台屏蔽各平台的差异
Inode结构体分析
每个inode都有一个号码,操作系统用inode号码来识别不同的文件。
这里值得重复一遍,Unix/Linux系统内部不使用文件名,而使用inode号码来识别文件。对于系统来说,文件名只是inode号码便于识别的别称或者绰号。
表面上,用户通过文件名,打开文件。实际上,系统内部这个过程分成三步:首先,系统找到这个文件名对应的inode号码;其次,通过inode号码,获取inode信息;最后,根据inode信息,找到文件数据所在的block,读出数据。
struct inode {
struct hlist_node i_hash; /* 哈希表 */
struct list_head i_list; /* 索引节点链表 */
struct list_head i_dentry; /* 目录项链表 */
unsigned long i_ino; /* 节点号 */
atomic_t i_count; /* 引用记数 */
umode_t i_mode; /* 访问权限控制 */
unsigned int i_nlink; /* 硬链接数 */
uid_t i_uid; /* 使用者id */
gid_t i_gid; /* 使用者id组 */
kdev_t i_rdev; /* 实设备标识符 */
loff_t i_size; /* 以字节为单位的文件大小 */
struct timespec i_atime; /* 最后访问时间 */
struct timespec i_mtime; /* 最后修改(modify)时间 */
struct timespec i_ctime; /* 最后改变(change)时间 */
unsigned int i_blkbits; /* 以位为单位的块大小 */
unsigned long i_blksize; /* 以字节为单位的块大小 */
unsigned long i_version; /* 版本号 */
unsigned long i_blocks; /* 文件的块数 */
unsigned short i_bytes; /* 使用的字节数 */
......
unsigned long dirtied_when; /* 首次修改时间 */
unsigned int i_flags; /* 文件系统标志 */
......
void *i_security; /* 安全模块 */
__u32 i_generation; /* 索引节点版本号 */
union { void *generic_ip; /* 文件特殊信息 */ } u;
};
作业
实现一个代码能从屏幕上接收任意多人数的信息添加录入。在黑窗口中能够支持print命令 将所有的人的信息打印 再黑窗口中能够支持exit命令退出程序
提示:命令与数据之间都是用空格分开的。 input: add tom 23 beijing add jay 33 taiwan add andy 55 HK input: print output: tom 23 beijing jay 33 taiwan andy 55 HK input: exit 应用程序退出 拜拜