- 博客(22)
- 资源 (1)
- 收藏
- 关注
原创 C++对象模型二——构造语义
决定一个cpctor能否被编译器合成的标准在于class能否展现出位逐次拷贝,如果能展现出位逐次拷贝,就不需要合成。如果是函数指针也是同理。
2023-08-16 16:04:42
40
原创 系统编程——并发
答2:每次接收信号都是将pending的那个信号位置设置为1,如果连续来多个同一个信号,他们的作用都是将那一位设置为1,多个来也没有作用,这是标准信号丢失的原因。所有的系统调用都是可重入的,一部分库函数也是可重入的(尤其是返回值是指针类型的函数),eg:memcpy拷贝内存空间 _r后缀的函数。答1:信号的忽略的做法,就是将umask的该位置设置成0,那么&之后永远都是0,不会被响应。第一次调用没有结束,第二次调用开始了,但是不会出错,就是可重入。标准信号的响应,没有严格的顺序。标准信号为什么要丢失?
2023-04-29 23:22:52
91
原创 进程1——概念,创建,回收
如果有一个进程对一个数据块进行写,如果子进程,那么该子进程会复制一块该空间,在新空间上进行写操作,即写时复制技术。图中展现部分结果,因为子进程执行后没有退出,且子进程是对父进程的复制,使得子进程再次进入外层循环+1,并不断进行fork,树形增长,导致资源爆炸。僵尸进程一般会存在,但是正常情况是存在一会儿就会收尸了,本身他们并不会占用很多资源,但是会。因为文件是全缓冲,因此在fork前刷新全部的流,fflush(NULL),pid一般是16bits有符号数,那进程号就是个有限的资源。因此,收尸的时候需要。
2023-04-28 00:15:47
50
原创 文件系统2
钩子函数 register a function to be called at normal process termination 正常终止的时候调用,释放该释放的内容。如果指定文件,将结果输出到文件中,如果未指定文件 ,将结果输出到终端。涉及文件读写,追加读写,时间戳格式化,全缓冲刷新流。案例:输出今天的时间和100天后的时间。
2023-04-27 15:08:50
59
原创 文件系统1
一对,打开的肯定在堆空间,后面会进行释放。du filename1 filename2 filename3 分析多个文件或路径所占的大小。du filename 文件的大小。du命令 当前路径所占的大小。// 实现一个du的命令。
2023-04-24 22:52:03
41
原创 系统编程-系统调用io/文件io
将文件描述符转成FILE*// 将已经打开的文件截断到长度。dup2(fd, fd2)等效于 close();系统、文件io是调用一次,执行一次,马上进入内核操作,没有缓冲模式,—响应速度快。// 将FILE转换为文件描述符fd。使用当前文件最小的文件描述符作为新的文件描述符,将原fd拷贝到新fd位置上。dup操作不是原子操作,将先关闭后赋值fd分开操作,会导致多进程编程出错。dup(fd)等效于fcntl(fd, F_DUPFD, 0);/dev/fd/目录: 虚目录,显示当前文件描述符的信息。
2023-04-17 08:20:40
116
1
原创 系统编程I/O
I/O操作是实现一切的基础fflushFile* 这个指针指向哪里?栈?静态区??默认最多可以打开多少个文件一个进程使用的时候,默认会打开三个流(标准输入, 输出,出错)ulimit -a 命令中open files可更改。
2023-04-15 00:28:52
54
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人