UC高级编程第三天
1.int fcntl(int fd, int cmd, … /* arg */ );
功能:
操作/控制文件描述符
参数:
fd: 要操作的文件描述符
cmd: 指定了对文件描述符操作的命令
文件的状态信息:
F_GETFL
F_SETFL
建议锁的类型:
F_GETLK 测试锁, 并不实际加锁, 如果可以加锁, 会在l_type中返回F_UNLCK
如果不能加锁, 在l_pid返回持有互斥锁进程PID
F_SETLK 设置锁, 如果锁是互斥锁(写锁), 返回-1, errno被设置 EAGAIN EACCES
F_SETLKW 设置锁, 如果锁是互斥锁, 等待其他进程释放锁
返回值:
成功 0
错误 -1 errno被设置
一.对文件夹进行操作
1.使用库函数对文件夹进行操作
1.opendir(3)
DIR *opendir(const char *name);
功能:打开一个文件夹
参数: name, 指定了要打开的文件夹的名字
返回值:成功 文件夹流
错误 NULL errno被设置
2.closedir(3)
int closedir(DIR *dirp);
功能:关闭文件夹流
参数: dirp 文件夹流
返回值:成功 0
错误 -1 errno被设置
3.readdir(3)
struct dirent *readdir(DIR *dirp);
功能:遍历文件夹流
参数: 文件夹流
返回值:
成功 返回一个指向struct dirent指针
NULL 读到了文件夹流的末尾
错误 NULL
4.glob(3)
int glob(const char *pattern,int flags,int(*errfunc)(const char *epath,int eerrno),glob_t *pglob);
功能:
解析给定的模式, 模式的规则符合shell
参数:
pattern:指定的模式 shell bash
flags: 要求
errfunnc: 错误处理函数
pglob: 保存查找的/匹配的结果
返回值:
成功:0 结果保存到pglob
错误:没匹配到 指定errfunc
二,linux中密码校验过程
1.密码存储在这里
/etc/shadow
2.使用crypt来加密密码
读出来的是加密之后的字符串, 和用户输入的密码加密之后的字段相匹配
3.密码的键入
getpass(3)
4.glob(3)
是一个用于匹配文件名模式(pattern)的函数,它遵循 shell 的规则来扩展文件名模式。
shell的规则:
1. ```
1. “/etc/" 表示/etc/下的所有文件
2. “/etc/a?” 表示/etc/所有以a开头的文件 ?通配
3. "/etc/.c” 表示/etc下的所有.c文件
```
```
strsep(3)
char *strsep(char **stringp, const char *delim);
功能:
分割字符串
参数:
**stringp 就是指向要分割的字符串
*delim 由切割字符组成的字符串
返回值:
成功 返回切割出来的字符串
错误 NULL
```
三,并发
进程与程序的区别
程序存放在硬盘中, 是计算机指令的集