随笔分类 - Linux系统编程
系统性学习
摘要:简洁干练, 见博文 https://blog.csdn.net/m0_71541548/article/details/139905606 。
阅读全文
摘要:之前介绍的服务器端代码只是基础功能,在支持多客户端访问时将面临困局。因为,我们来介绍服务器并发编程模型。 server.c #include <errno.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h
阅读全文
摘要:相关博文: 系统编程-网络-tcp客户端服务器编程模型、socket、htons、inet_ntop等各API详解、使用telnet测试基本服务器功能 接着该上篇博文,咱们继续,首先,为了内容的完整性和连续性,我们首要的是立马补充、展示客户端的示例代码。 在此之后,之后咱们有两个方向: 一是介绍客户
阅读全文
摘要:PART1 基础知识 1. 字节序 网络字节序是大端字节序(低地址存放更高位的字节), 所以,对于字节序为小端的机器需要收发网络数据的场景,要对这些数据进行字节序转换。 字节序转换函数,常用的有四个: 很好记,n表示network, h表示host, l表示long, s表示short。 举例, h
阅读全文
摘要:1. 内容概要 2. OSI模型和TCP/IP模型 OSI模型与TCP/IP模型的对应关系 3. TCP/IP协议簇 端口 4. 网络层协议 IP协议 IP地址 IP地址分类 5. 传输层协议 5.1 传输层之TCP协议 TCP是面向字节流的 TCP不像UDP一样那样一个个报文独立地传输,而是在不保
阅读全文
摘要:信号发送 kill 和 raise函数 kill函数参数详解: 实验1 raise和kill 的使用 #include <stdio.h> #include <signal.h> #include <unistd.h> #include <stdlib.h> #include <sys/wait.h
阅读全文
摘要:信号章节 -- 信号章节总体概要 信号基本概念 信号是异步事件,发送信号的线程可以继续向下执行而不阻塞。 信号无优先级。 1到31号信号是非实时信号,发送的信号可能会丢失,不支持信号排队。 31号信号到64是实时信号, 发送的信号都会被接收, 支持信号排队。 信号在Linux内核头文件中的宏定义 信
阅读全文
摘要:我的相关博文: 系统编程-进程-close-on-exec机制 PART1 exec系列函数功能简介 exec系列函数登场 常规操作是先fork一个子进程,然后在子进程中调用exec系列函数执行新的目标程序, 虽然exec系列函数执行成功不返回,但是我们仍然i要使用wait或waitpid让父进程给
阅读全文
摘要:1. wait、waitpid 函数简介 补充:对于waitpid,如果返回值为0,表示指定去等待的子进程尚未结束。 该系列宏的使用方法展示: PART1 实验思路: 使用wait系统调用让父进程给子进程收尸,并获取子进程的返回值。 同时,正常终止。 直接打印获取的返回值会与实际返回的值不一样,进而
阅读全文
摘要:1. 守护进程 2. 孤儿进程 父进程结束,子进程就成为了孤儿进程。孤儿进程由1号进程(init进程)领养。 2.1实验: 实验思路: 先产生一个孤儿进程,然后打印出该孤儿进程的父进程ID。 #include <stdio.h> #include <sys/types.h> #include <sy
阅读全文
摘要:1. 进程链、进程扇 图示 所谓进程链就是父进程创建一个子进程,创建的子进程再次创建出一个属于自己的子进程,这样依次往下循环。 所谓的进程扇就是一个父进程创建出多个子进程。 2. 进程链 #include <stdio.h> #include <sys/types.h> #include <sys/
阅读全文
摘要:我的关联博文: 系统编程-进程-fork深度理解、vfork简介 系统编程-进程-先后fork或open一个文件的区别 test1: lseek基本使用 #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include
阅读全文
摘要:1. test1 #include <stdio.h> #include <unistd.h> #include <stdlib.h> /******全局变量位于数据区, 用于数据区测试*******/ int globvar = 6; char buf[] = "a write to stdout
阅读全文
摘要:1. fork基本使用 #include <unistd.h> #include <stdio.h> int main(){ pid_t pid = fork(); if(pid < 0){ perror("fork error"); }else if(pid > 0){ printf("I am
阅读全文
摘要:1. 进程标识 待添加 用户和用户组相关 https://www.cnblogs.com/ddz-linux/p/10467106.html 用户组 进程组 2. 实验,待添加 chmod u+s file : 修改黏着位,可以使得其他用户操作该文件时临时转变为该文件拥有者用户,这就是有效用户的含义
阅读全文
摘要:1. ps详解 ps : 只列出当前用户的进程 ps -ef : e表示有效, f 表示全面, 所以是列出后台的所有有效进程。 ps -ef | more : 列出后台所有的有效进程,并且分屏显示 ps -aux | more : 可以查看进程占用CPU 和 内存的百分比 、 进程状态 详细参数参考
阅读全文
摘要:1. atexit函数: 用于登记用户自定义的进程终止函数,这样会覆盖系统默认提供的标准终止函数 我们自定义的进程终止函数并非在所有进程终止的情况下都会被调用,是否会被调用与进程的终止方式有关。 下图展示了不同的进程终止方式的区别: _exit或者_EXIT不会负责调用进程终止函数,也不会刷新缓存。
阅读全文
摘要:PART1 1. 进程相关的内容概要(主要知识模块) PART2 2, 程序和进程的概念 内核中的进程结构 ubuntu内的进程结构声明所在头文件 /usr/src/linux-headers-4.15.0-88-generic/include/linux/sched.h 进程结构体: 3, C程序
阅读全文
摘要:<1> 操作系统提供的服务 <2> 现代操作系统的特征 2.1 微内核(英文中常译作µ-kernel或者micro kernel) 这是一种能够提供必要服务的操作系统内核;其中这些必要的服务包括任务,线程,交互进程通信(IPC,Inter-Process Communication)以及
阅读全文
摘要:Part1. 计算机的基本组成原理 Part2. 计算机执行原理顶层视图 Part3. 指令 指令周期 取指令和执行指令 指令格式 前面1字节是操作码,代码指令的功能,例如加法功能。 后面3字节用于寻找要操作的数据值。 由于数据存储在内存(存储器)中,由内存地址来标识,所以后3字节本质是要操作的数据
阅读全文

浙公网安备 33010602011771号