2.1.2 《Unix环境高级编程》
文章平均质量分 68
2.1.2 《Unix环境高级编程》
vimer-hz
书是越读越薄的
展开
-
[10 信号]使用sigprocmask函数阻塞SIGQUIT信号
使用sigprocmask函数阻塞SIGQUIT信号转载 2022-08-20 18:09:50 · 318 阅读 · 0 评论 -
[10 信号]使用alarm函数实现sleep,使用alarm函数实现对阻塞操作设置超时
使用alarm函数实现sleep,使用alarm函数实现对阻塞操作设置超时转载 2022-07-31 22:13:57 · 739 阅读 · 0 评论 -
[10 信号]信号处理函数内必须使用可重入函数
信号处理函数内必须使用可重入函数转载 2022-06-19 13:01:24 · 269 阅读 · 0 评论 -
[10 信号]使用signal函数捕获信号并处理
使用signal函数捕获信号并处理转载 2022-06-05 21:38:23 · 903 阅读 · 0 评论 -
[10 信号]Unix系统信号
Unix系统信号转载 2022-06-03 17:02:26 · 290 阅读 · 0 评论 -
[8 进程控制]使用times计算进程处理时间
1 times介绍我们可以度量的3个时间:墙上时钟时间,用户CPU时间和系统CPU时间。任一进程可调用times函数获得它自己以及已终止子进程的上述值。#include <sys/times.h>// 若成功,返回流逝的墙上时钟时间(以时钟滴答数为单位)// 若失败,返回-1clock_t times(struct tms *buf);tms结构体定义:struct tms { clock_t tms_utime; //user CPU time转载 2022-05-22 16:58:09 · 1038 阅读 · 0 评论 -
[8 进程控制]使用accton进行进程会计处理
1 进程会计介绍启用进程会计选项后,当进程结束后内核会写一个会计记录。会计记录一般包括命令名,使用的CPU时间总量,用户ID,组ID和启动时间等。root用户可以执行accton命令来启用会计处理。会计记录邪道指定的文件中,linux中该文件是/var/account/pacct。acct结构定义在<sys/acct.h>中:typedef u_short comp_t;struct acct{ char ac_flag; //flag char ac转载 2022-05-15 19:32:49 · 695 阅读 · 0 评论 -
[8 进程控制]使用system函数执行命令
1 system介绍在Unix系统中,system总是可用的。system接口如下:#include <stdlib.h>int system(const char* cmdstring);system在其实现中调用了fork,exec和waitpid函数,因此有3种返回值:(1)如果fork失败或waitpid返回除EINTR之外的出错,则system返回-1,且设置errno以指示错误类型。(2)如果exec失败,则其返回值如同shell执行了exit(127)。(3转载 2022-05-03 12:08:20 · 1393 阅读 · 0 评论 -
[8 进程控制]使用setuid等函数更改实际用户ID,有效用户ID和保存的设置用户ID
在Unix系统中,特权以及访问控制是基于用户ID的。当程序需要增加特权或需要访问当前不允许访问的资源时,我们需要更换自己的用户ID,使得新ID具有合适的特权或访问权限。1 setuid可以用setuid函数设置实际用户ID,有效用户ID和保存的设置用户ID。#include <unistd.h>// 若成功,返回0;若出错,返回-1int setuid(uid_t uid);先看下更改用户ID的规则:(1)若进程具有超级用户特权,则setuid函数将实际用户ID,转载 2022-05-01 12:18:11 · 296 阅读 · 0 评论 -
[8 进程控制]使用exec函数替换当前进程
1 exec介绍fork函数创建新的进程后,子进程往往要调用一种exec函数以执行另一个程序。当进程调用exec函数时,该进程执行的程序完全替代为新程序,而新程序则从其main函数开始执行。exec只是用磁盘上的一个新程序替换了当前进程的正文段,数据段,堆和栈。基本的进程控制原语:fork函数创建新进程,exec函数初始执行新的程序,exit函数终止,wait函数等待终止。有7种exec函数,统称为exec函数:#include <unistd.h>int execl(con转载 2022-04-09 19:48:34 · 1003 阅读 · 0 评论 -
[8 进程控制]使用wait函数获取子进程终止状态
1 wait/waitpid介绍当一个进程正常或异常终止时,内核会向其父进程发送SIGCHLD信号。因为子进程终止是异步的,所以信号发送也是异步的。父进程可以选择忽略该信号,或者提供信号处理函数进行处理。对于SIGCHLD信号,系统默认动作是忽略它。当父进程调用wait或waitpid时会发生什么:(1)如果其所有子进程都还在运行,则阻塞。(2)如果一个子进程已终止,正等待父进程获取其终止状态,则取得该子进程的终止状态后立即返回。(3)如果其没有任何子进程,则立即出错返回。#include转载 2022-03-27 11:42:08 · 1107 阅读 · 0 评论 -
[8 进程控制]使用fork函数创建子进程
1 C程序典型存储空间先来看下进程的典型存储空间。C程序一直由下列几部分组成:(1)正文段这是由CPU执行的机器指令部分。通常,正文段是可共享的,在存储器中只需有一个副本。正文段也是只读的,以防止程序由于意外被修改。(2)初始化数据段如C程序中函数之外的声明:int maxcount = 99;(3)未初始化数据段通常将此段称为bss段,即"由符号开始的段"(block started by symbol)。在程序开始执行之前,内核将此段中的数据初始化为0或空指针。(4)栈转载 2022-03-05 13:35:31 · 1677 阅读 · 0 评论 -
[7 进程环境]使用setjmp,longjmp函数实现“非局部goto“
C语言中,goto语句是不能跨越函数的,如果需要跨越函数跳转,需要使用setjmp和longjmp函数。"非局部goto"是指不是在一个函数内实现跳转,而是在栈上跳过若干调用帧,返回到当前函数调用路径上的某个函数。函数原型如下:#include <setjmp.h>int setjmp(jmp_buf env);void longjmp(jmp_buf env, int val);在希望返回的位置调用setjmp,setjmp的参数是jmp_buf,其中存放在调用longjmp转载 2022-02-18 19:30:40 · 121 阅读 · 0 评论 -
[7 进程环境]使用atexit函数注册终止处理函数
下图显示了一个C程序是如何启动和正常关闭的:图1 C程序是如何启动和正常关闭的1 启动C程序总是从main函数开始执行,内核是通过exec函数调用一个C启动例程再调用的main函数。C启动例程从内核获取命令行参数和环境变量,为调用main函数做好准备。2 关闭有8种方式可以使进程关闭,5种正常终止,3种异常终止。正常终止:(1)从main返回(2)调用exit(3)调用_exit或_Exit(4)最后一个线程从C启动例程返回(5)最后一个线程调用phtread_exit(转载 2022-02-17 18:19:52 · 616 阅读 · 0 评论 -
[3 文件I/O(不带缓冲的I/O)]
3.1 引言Unix系统中的大多数文件I/O只需要用到5个函数:open、read、write、lseek以及close。不带缓冲的I/O指的是read和write都调用内核中的一个系统调用。3.2 文件描述符对于内核而言,所有打开的文件都通过文件描述符引用。惯例,Unix系统shell把文件描述符0与进程的标准输入关联,文件描述符1与进程的标准输出关联,文件描述符2与进程的标准错误关联。<unistd.h>包含STDIN_FILENO、STDOUT_FILENO和STDER转载 2021-09-22 16:37:45 · 313 阅读 · 0 评论 -
[1 Unix基础]
源码对应intro目录1.2 Unix体系架构内核的接口被称为系统调用(system call)。公用函数库构建在系统调用接口之上,应用程序即可使用公用函数库,也可使用系统调用。shell是一个特殊的应用程序,为运行其他应用程序提供了一个接口。todo图1-1 Unix操作系统的体系结构1.3 登录系统在口令文件(/etc/passwd)中查看登录名。口令文件的登录项由7个以冒号分隔的字段组成,依次是:登录名,加密口令,数字用户ID(205),数字组ID(105),注释字段,起始目录转载 2021-09-09 12:39:35 · 216 阅读 · 0 评论 -
[0 引言]
源码:http://www.apuebook.com/编译:apt-get install libbsd-devmakeUnix为程序提供了大量服务,打开文件,读文件,启动新程序,分配存储区以及获得当前时间。这些服务被称为系统调用接口。本书分为以下6个部分。1 Unix基础:Unix基础(1章),Unix标准(2章)2 I/O:不带缓存的I/O(3章),文件和目录(4章),标准I/O库(5章),标准系统数据文件(6章)3 进程:进程环境(7章),进程控制(转载 2021-09-01 16:53:19 · 69 阅读 · 0 评论