![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
UNIX环境高级编程
wllinux12138
这个作者很懒,什么都没留下…
展开
-
APUE笔记-文件IO
文件IO打开文件#include<fcntl.h>openopenat:fd是打开的目录的文件描述符,所以可以写相对路径掌握:O_RDONLY、O_WRONLY、O_RDWR、O_APPEND、O_CREAT、O_EXCL:和O_CREAT一起用,测试文件是否存在,存在则出错,否则创建,使得测试和创建成为原子操作。实验:第一次执行,创建了hello文件,...原创 2018-08-16 21:51:41 · 172 阅读 · 0 评论 -
APUE笔记-进程间通信
进程间通信部分内容参考《Unix网络编程 卷2》管道只能在有公共祖先的进程中使用。实验: 1 #include <stdio.h> ...原创 2018-09-21 16:11:26 · 188 阅读 · 0 评论 -
APUE笔记-守护进程
守护进程编程步骤:1、umask将屏蔽字改为已知值(通常为0)2、调用fork然后师父进程exit。(子进程继承父进程的组ID,子进程获得新的ID,并且不是组长。)3、setsid创建新的会话。(做了三件事:成为新会话首进程、成为新进程组的组长、没有控制终端。)忽略掉SIGHUP信号,这个信号和控制终端有关。再次fork并且使父进程exit,使守护进程不是会话首进程,防止取...原创 2018-09-13 22:40:38 · 218 阅读 · 0 评论 -
APUE笔记-线程
线程线程ID pthread_t函数:比较线程ID是否相等:int pthread_equal(pthread_t tid1,pthread_t tid2);获取自己的线程ID:pthread_t pthread_self(void)例子:工作队列,主线程控制作业分配,其他线程从作业队列取出自己的作业。需要比较作业中设置的ID和自己的ID。创建线程:失败返回错误码,不像其他...原创 2018-09-04 19:32:51 · 166 阅读 · 0 评论 -
sigjmp longjmp 和 sigsetjmp siglongjmp比较
阅读《Unix环境高级编程》P283页 10.15处的体会。(错误之处,望大家批评指正)本文通过几个实验说明sigjmp longjmp 和 sigsetjmp siglongjmp的区别。实验一:执行信号X(任意信号)处理程序时,X信号会被自动加入到信号屏蔽字。信号处理程序执行完毕,信号屏蔽字会恢复原来的。 1 #include <stdio.h> ...原创 2018-09-01 11:13:11 · 513 阅读 · 0 评论 -
APUE笔记-进程环境
进程环境进程的内核空间映射到同一块物理地址。进程只能读写用户空间。用户空间映射到不同的物理地址,进程只能读写自己的用户空间。PCB在内核空间,操作系统按照页管理内存。每个页可以设置读写访问权限。参考MMU的设置代码。Linux只用了两个特权级别。(Intel的CPU 4个特权级) ISO C规定一个进程可以登记最多32个函数,这些函数由exit自动调用atexit(st...原创 2018-09-06 20:39:51 · 134 阅读 · 0 评论 -
APUE笔记-系统数据文件和信息
系统数据文件和信息passwd结构体(#include<pwd.h>)这个结构体的字段也就是/ect/passwd中看到的字段root:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologin/etc/passwd中一行记录...原创 2018-08-27 20:37:59 · 157 阅读 · 0 评论 -
APUE笔记-文件和目录
函数lstat:不跟踪符号链接。fstatat:路径可以是相对当前打开的目录,目录的文件描述符为fd,如果填写绝对路径,则fd被忽略。flag 设置为AT_SYMLINK_NOFOLLOW时不跟踪符号链接,默认跟踪符号链接。#include <sys/stat.h>int stat(const char *path, struct stat *buf);int fst...原创 2018-08-30 18:43:32 · 273 阅读 · 0 评论 -
ubantu安装tftp服务器简单方法
Ubuntu安装tftp1. 安装$ apt-get install tftp-hpa tftpd-hpa2. 建立目录$ mkdir /tftpboot # 这是建立tftp传输目录。$ sudo chmod 0777 /tftpboot$ sudo touch test.txt # test.txt文件最好输入内容以便区分3. 配置# vi /etc...原创 2019-07-24 09:37:19 · 127 阅读 · 0 评论