
APUE
文章平均质量分 93
####
冷眼观world
社畜
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
标准I/O
fopen函数 函数原型 FILE *fopen(const char *pathname, const char *mode); 第一个参数是文件路径名,第二个参数是打开方式,返回一个文件指针 打开方式 r Open text file for reading. The stream is positioned at the beginning of the file. r+ Open for reading and writing. The stream is position原创 2021-11-01 00:05:46 · 199 阅读 · 0 评论 -
系统调用I/O(文件I/O)
大纲文件描述符IO操作open close返回值read write返回值使用样例lseek系统IO和标准IO的区别文件共享原子操作程序的重定向:dup dup2使用样例同步:sync fsync fdatasync其他fcntl ioctl/dev/fd/ 文件描述符 通过open函数打开一个文件,可以得到一个存储该文件所有属性的结构体(类似于标准io的FILE),但是又不完全像标准io,系统io的open会将这个结构体的指针存放到一个数组中,然后返回这个指针在数组中的下标,而是一个int值(不像fop原创 2021-10-31 23:56:19 · 669 阅读 · 0 评论 -
文件和目录
大纲文件系统目录和文件获取文件属性stat函数返回值文件访问权限umask文件权限更改:chmod、fchmod粘着位(t位)文件系统:FAT、UFS硬链接和符号链接utime目录的创建和销毁更改当前工作路径分析目录/读取目录内容系统数据文件和信息进程环境 文件系统 目录和文件 获取文件属性 stat函数 int stat(const char *pathname, struct stat *statbuf); //通过文件名 int fstat(int fd, struct stat *statbuf);原创 2021-11-02 23:54:28 · 372 阅读 · 0 评论 -
系统数据文件和信息
大纲口令文件getpwuid、getpwname组文件getgrgid、getgrgrnam阴影口令getspnam时间timegmtime、localtimemktimestrftime 口令文件 linux中passwd结构包含10个字段中的7个,每个字段用:分隔 用户名:加密口令:用户ID:组ID:注释字段:初始工作目录:初始shell yzq:x:1000:1000:,,,:/home/yzq:/bin/bash 按照上面的字段顺序,出现passwd结构体 struct passwd { ch原创 2021-11-04 02:16:53 · 297 阅读 · 0 评论 -
进程的环境
大纲进程的终止正常终止异常终止命令行参数getopt、getopt_long返回值使用样例环境变量getenv、setenv、putenvC程序的存储空间布局库函数跳转资源的获取及控制 进程的终止 正常终止 从main函数返回 调用exit函数 用传入的值和0377(意味着只保留低8位,范围-128-127)相与,然后返回结果给父进程。 调用exit导致进程正常终止,使用atexit()或on_exit()注册的函数将会以逆序顺序调用 调用_exit或_Exit _开头的是系统调用,被exit调用使用。普原创 2021-11-06 20:54:58 · 230 阅读 · 0 评论 -
进程的控制
大纲*进程标识符pidgetpidgetppid*进程的产生fork使用样例样例1样例2vfork*进程的消亡及资源释放waitwaitpid进程分配分块法交叉分配进程池*exec函数族使用样例样例1样例2用户权限及组权限函数族使用样例system进程会计进程时间守护进程系统日志 *进程标识符pid 类型是pid_t,一般是有符号的16位整型数。进程号是顺次向下被取得使用的,和进程标识符优先取最小的使用不一样。 getpid 返回当前进程的pid pid_t getpid(void); getppid 返原创 2021-11-11 21:33:59 · 883 阅读 · 0 评论 -
并发之信号
大纲信号的概念signal信号的不可靠可重入函数信号的响应过程没收到信号收到信号SIG_IGN原理标准信号为什么会丢失信号常用函数killraisealarmpause结合alarm和pause实现类似漏桶的程序abortsystemsleep信号集信号屏蔽字和pending集处理扩展sigsuspendsigactionsetitimer实时信号 同步,就是调用某个东西是,调用方得等待这个调用返回结果才能继续往后执行。 异步,和同步相反 调用方不会理解得到结果,而是在调用发出后调用者可用继续执行后续操作原创 2021-11-16 20:20:34 · 1076 阅读 · 0 评论 -
并发之线程
大纲线程概念线程创建使用样例线程终止使用样例栈清理线程取消线程同步线程属性线程同步的属性重入线程和信号线程和fork 线程概念 线程就像是一个正在运行的函数,多线程就是一个正在运行的程序中有多个函数正在同时运行。有点像main函数 现在用的比较多的是posix线程,这里的posix指的是一套标准,而不是实现。还有另一套标准叫openmp。 有个线程标识:pthread_t,p表示是posix下的,thread表示线程。这个类型并不确定,可能是个整型,也可能是结构体、共用体。 因为类型不确定,所以一般不同标准原创 2021-11-21 21:35:45 · 724 阅读 · 0 评论 -
并发之线程控制
线程属性 int pthread_attr_init(pthread_attr_t *attr); int pthread_attr_destroy(pthread_attr_t *attr);原创 2021-11-23 15:29:41 · 609 阅读 · 0 评论 -
高级I/O
非阻塞I/O 阻塞I/O就是发出IO请求后内核会查看数据是否就绪,如果没就会等待数据就绪,此时线程就处于阻塞状态。而非阻塞IO是发出请求后并不需要等待,而是马上得到一个结果。我们之前用的都是阻塞I/O,但是在某些实现上用阻塞I/O不太妥当。举例如下:假设设备A和设备B要进行数据交换 这里只是由一个线程或进程来完成。如果A没有数据,刚开始就阻塞,后面的谁都动不了 可以分成两个任务来做: 这里由两个线程或者进程实现,一个负责读A写B,一个负责读B写A。 上面两个做法,第一个如果用阻塞IO实现可以直接宣告死亡,原创 2021-11-26 19:39:13 · 330 阅读 · 0 评论 -
进程间通信
大纲管道匿名管道使用样例命名管道XSI IPC消息队列message queuemsggetmsgsndmsgrcvmsgctl使用样例信号量semgetsemopsemctl 每个进程有各自不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到。所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程1把数据从用户空间中拷贝到缓冲区,进程2再从缓冲区把数据读走。内核提供的这种机制就是进程间通信。通信需要媒介,两个进程间通信的媒介就是内存。通信的原理就是让两个或多个进程能够看到同一块共同的原创 2021-11-30 18:04:56 · 1338 阅读 · 0 评论