09 2023 档案

linux 信号集 信号捕捉函数
摘要:信号集: 许多信号相关的系统调用都需要能表示一组不同的信号,多个信号可使用一个称之为信号集的数据结构来表示,其系统数据类型为 sigset_t 在 PCB 中有两个非常重要的信号集。 一个称之为:“阻塞信号集”, 另一个称之为 “未决信号集”。这两个信号集都是内核使用 位图机制(类似 O_AAA | 阅读全文

posted @ 2023-09-26 22:47 廿陆 阅读(37) 评论(0) 推荐(0) 编辑

linux alarm函数 、setitimer函数、signal函数
摘要:alarm定时器: 1 /* 2 #include <unistd.h> 3 unsigned int alarm(unsigned int seconds); 4 - 功能: 设置定时器(闹钟),函数调用开始倒计时,当倒计时为0的时候 5 函数会给当前的进程发送一个信号: SIGALARM 6 - 阅读全文

posted @ 2023-09-26 10:56 廿陆 阅读(295) 评论(0) 推荐(0) 编辑

linux 信号 kill函数 raise函数 abort函数
摘要:信号的概念: 信号是Linux进程间通信的最古老的方式之一,是事件发生时对进程的通知机制,有时也称之为软件中断,它是在软件层次上对中断机制的一种模拟,是一种异步通信的方式。信号可以导致一个正在运行的进程被另一个正在进行的异步进程中断,转而处理某一个突发事件。 发往进程的诸多信号,通常都是源于内核。引 阅读全文

posted @ 2023-09-25 21:19 廿陆 编辑

linux 内存映射
摘要:内存映射:Memory-mapped I/O 内存映射是将磁盘文件的数据映射到内存,用户通过修改内存就能修改磁盘文件 进程的虚拟地址空间会对应于实际的物理内存当中。。映射到 动态库(共享库)之中,内存动态保存文件的数据。 mmap函数: 1 /* 2 man 2 mmap:(m:memory内存 m 阅读全文

posted @ 2023-09-24 22:01 廿陆 阅读(220) 评论(0) 推荐(0) 编辑

linux有名管道实现聊天功能
摘要:有名管道实现聊天功能 chatA.c chatB.c 获取键盘录入数据: scanf()函数遇到换行自动结束 持续录入数据:fgets()函数 chatA.c 1 #include <stdio.h> 2 #include <sys/types.h> 3 #include <unistd.h> 4 阅读全文

posted @ 2023-09-24 11:26 廿陆 阅读(20) 评论(0) 推荐(0) 编辑

linux 有名管道
摘要:有名管道: 匿名管道,由于没有名字,只能用于亲缘关系的进程间通信。为了克服这个缺点,提出了有名管道(FIFO),也叫命名管道、FIFO文件 有名管道(FIFO)不同于匿名管道之处在于它提供了一个路径名与之关联,以 FIFO 的文件形式存在于文件系统中,并且其打开方式与打开一个普通文件是一样的,这样即 阅读全文

posted @ 2023-09-23 17:37 廿陆 阅读(101) 评论(0) 推荐(0) 编辑

linux 管道的读写特点
摘要:管道的读写特点: 使用管道时,需要注意一下几种特殊的情况(假设都是阻塞I/O操作) 1.所有的指向管道写端的文件描述符都关闭了(管道写端引用计数为0),有进程从管道的读端读数据,那么管道中剩余的数据被读取以后,再次read会返回0,就像读到文件末尾一样. 2.如果有指向管道写端的文件描述符没有关闭( 阅读全文

posted @ 2023-09-23 11:26 廿陆 阅读(43) 评论(0) 推荐(0) 编辑

linux 进程间通信 匿名管道
摘要:进程间通信概念 进程是一个独立的资源分配单元,不同进程 (这里所说的进程通常指的是用户进程) 之间的资源是独立的,没有关联,不能在一个进程中直接访问另一个进程的资源 但进程不是孤立的,不同的进程需要进行信息的交互和状态的传递等,因此需要进程间通信 (IPC: Inter Processes Comm 阅读全文

posted @ 2023-09-20 10:54 廿陆 阅读(31) 评论(0) 推荐(0) 编辑

linux wait函数 : 处理僵尸进程(进程回收)
摘要:进程回收 在每个进程退出的时候,内核释放该进程所有的资源、包括打开的文件、占用的内存等。但是仍然为其保留一定的信息,这些信息主要指进程控制块 PCB 的信息(进程号、退出状态、运行时间等) 父进程可以通过调用 wait 或 waitpid 得到它的退出状态同时彻底清除这个进程。 wait() 和 w 阅读全文

posted @ 2023-09-19 17:33 廿陆 阅读(202) 评论(0) 推荐(0) 编辑

linux进程退出 孤儿进程 僵尸进程
摘要:进程退出 #include <stdlib.h> void exit(int status); #include <unistd.h> void _exit(int status); 1 /* 2 #include <stdlib.h> 3 void exit(int status); 4 5 #i 阅读全文

posted @ 2023-09-19 11:15 廿陆 阅读(20) 评论(0) 推荐(0) 编辑

C++ STL map/multimap容器
摘要:map基本概念: map中所有元素都是 pair pair中第一个元素为 key(键值),起到索引作用, 第二个元素为 value(实值) 所有元素都会根据元素的键值自动排序 本质: map/multimap属于 关联式容器 , 底层结构是用二叉树实现 优点: 可以根据key值快速找到 value值 阅读全文

posted @ 2023-09-18 12:06 廿陆 阅读(17) 评论(0) 推荐(0) 编辑

linux GDB多进程调试 exec函数族
摘要:父子进程之间的关系: 区别: 1.fork()函数的返回值不同 父进程中: >0(栈内存) 返回的子进程ID 子进程中: =0(栈内存) 2.PCB中的一些数据不同 当前进程的PID 当前进程的父进程的ID PPID 信号集不同 共同点: 某些状态下:子进程刚被创建出来,还没有执行任何的写数据的操作 阅读全文

posted @ 2023-09-18 10:51 廿陆 阅读(107) 评论(0) 推荐(0) 编辑

linux进程创建 fork
摘要:进程创建 系统允许一个进程创建新进程,新进程即为子进程,子进程还可以创建新的子进程,形成进程树结构模型。 1 /* 2 man 2 fork 3 fork - create a child process 4 #include <sys/types.h> 5 #include <unistd.h> 阅读全文

posted @ 2023-09-15 11:16 廿陆 阅读(29) 评论(0) 推荐(0) 编辑

linux进程状态转换
摘要:进程的状态 进程状态反映进程执行过程的变化。这些状态随着进程的执行和外界条件的变化而转换。在三态模型中,进程状态分为三个基本状态,即就绪态,运行态,阻塞态。在五态模型中,进程分为新建态、就绪态,运行态,阻塞态,终止态。 ◼ 运行态:进程占有处理器正在运行 ◼ 就绪态:进程具备运行条件,等待系统分配处 阅读全文

posted @ 2023-09-14 11:24 廿陆 阅读(115) 评论(0) 推荐(0) 编辑

linux进程概述 ulimit 显示资源上限
摘要:程序和进程 程序:是包含一系列信息的文件,这些信息描述了如何在运行时创建一个进程: ◼ 二进制格式标识:每个程序文件都包含用于描述可执行文件格式的元信息(大小、修改时间等)。内核利用此信息来解释文件中的其他信息。(Linux: ELF可执行连接格式) ◼ 机器语言指令:对程序算法进行编码。 ◼ 程序 阅读全文

posted @ 2023-09-13 19:00 廿陆 阅读(53) 评论(0) 推荐(0) 编辑

linux 目录遍历函数 opendir readdir closedir dup dup2 fcntl
摘要:目录遍历 opendir readdir closedir 1 /* 2 man 3(标准C库函数) 3 man 3 opendir man 3 readdir man 3 closedir 4 #include <sys/types.h> 5 #include <dirent.h> 6 DIR* 阅读全文

posted @ 2023-09-13 12:50 廿陆 阅读(57) 评论(0) 推荐(0) 编辑

linux 目录操作函数 mkdir rename chdir
摘要:mkdir 1 /* 2 man 2 mkdir:linux系统函数 3 #include <sys/stat.h> 4 #include <sys/types.h> 5 int mkdir(const char* pathname, mode_t mode); 6 作用:创建一个目录 7 参数: 阅读全文

posted @ 2023-09-12 16:56 廿陆 阅读(48) 评论(0) 推荐(0) 编辑

linux 文件属性操作函数 access chmod truncate
摘要:access:判断某个文件是否有某个权限,或者某个权限是否存在 1 /* 2 #include <unistd.h> 3 int access(const char* pahtname, int mode); 4 作用:判断某个文件是否有某个权限,或者某个权限是否存在 5 参数: 6 - pathn 阅读全文

posted @ 2023-09-12 15:32 廿陆 阅读(14) 评论(0) 推荐(0) 编辑

linux案例 模拟 ls -l
摘要:ls -l //当前目录下文件的信息 文件权限 硬链接数 所有者 所在组 大小 最后修改时间 文件名称 ls -l 文件名称 //具体文件的信息 1 #include <stdio.h> 2 #include <sys/types.h> //stat 3 #include <sys/stat.h> 阅读全文

posted @ 2023-09-12 11:39 廿陆 阅读(5) 评论(0) 推荐(0) 编辑

Linxu系统IO函数 stat 和 lstat 函数
摘要:stat 和 lstat函数 作用:获取一个文件相关的一些信息 st_mode 1 /* 2 stat: man 2 stat 3 #include <sys/types.h> 4 #include <sys/stat.h> 5 #include <unistd.h> 6 7 int stat(co 阅读全文

posted @ 2023-09-12 10:56 廿陆 阅读(24) 评论(0) 推荐(0) 编辑

Linxu系统IO函数 read和write lseek
摘要:read 和 write 函数 1 /* 2 #include <unistd.h> 3 ssize_t read(int fd, void* buf, size_t count); 4 参数: 5 - fd:文件描述符,open得到的,通过这个文件描述符操作某个文件 6 - buf:读取数据存放的 阅读全文

posted @ 2023-09-11 18:06 廿陆 阅读(16) 评论(0) 推荐(0) 编辑

标准C库函数 和 Linxu系统IO函数 open和close 虚拟地址空间
摘要:C库的IO函数 C库函数通过 FILE指针 来访问文件并索引到对应磁盘文件, FILE文件指针(结构体) 文件描述符:定位文件 文件读写指针:对数据进行操作 读写指针 缓冲区:提高效率 FILE 是 _IO_FILE 的重定义 1 struct _IO_FILE 2 { 3 int _flags; 阅读全文

posted @ 2023-09-11 11:21 廿陆 阅读(23) 评论(0) 推荐(0) 编辑

C++ STL set/multiset容器
摘要:set基本概念: 所有元素都会在插入时自动被排序 本质: set/multiset属于关联式容器,底层结构是用二叉树实现 set和multiset区别: set不允许容器中有重复的元素 multiset允许容器中有重复的元素 set构造和赋值 1 #include <iostream> 2 #inc 阅读全文

posted @ 2023-09-07 11:25 廿陆 阅读(23) 评论(0) 推荐(0) 编辑

C++ STL list容器 链表
摘要:list基本概念: 功能:将数据进行链式存储 链表(list):是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接实现的 链表的组成:链表由一系列结点组成 结点的组成:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域 优点:可以对任意位置进行快速插入或删除元 阅读全文

posted @ 2023-09-06 10:37 廿陆 阅读(103) 评论(0) 推荐(0) 编辑

C++ STL stack -- queue
摘要:stack基本概念 stack是一种 先进后出(First In Last Out, FILO) 的数据结构,它只有一个出口 栈中只有顶端的元素才可以被外界使用,因此栈不允许有遍历行为 栈可以判断容器是否为空: empty 站可以返回元素个数:size 栈中进入数据 入栈 push 栈中弹出数据 出 阅读全文

posted @ 2023-09-06 10:03 廿陆 阅读(10) 评论(0) 推荐(0) 编辑

GDB调试
摘要:什么是 GDB? ◼ GDB 是由 GNU 软件系统社区提供的调试工具,同 GCC 配套组成了一套完整的开发环境,GDB 是 Linux 和许多类 Unix 系统中的标准开发环境。 ◼ 一般来说,GDB 主要帮助你完成下面四个方面的功能: 1. 启动程序,可以按照自定义的要求随心所欲的运行程序 2. 阅读全文

posted @ 2023-09-05 17:36 廿陆 阅读(8) 评论(0) 推荐(0) 编辑

Makefile
摘要:什么是Makefile 一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,Makefile文件定义了一系列的规则来指定哪些文件需要先编译,那些文件需要后编译,那些文件需要重新编译,甚至于进行更复杂的功能操作,因为Makefile文件就像一个Shell脚本一样,也可以执行操作系统的 阅读全文

posted @ 2023-09-05 11:25 廿陆 阅读(17) 评论(0) 推荐(0) 编辑

linux 动态库的制作与使用
摘要:命名规则: Linux:libxxx.so 生成为 libxxx.so 使用则为 xxx lib: 前缀(固定) xxx: 库的名字,自起 .so: 后缀(固定) 在Linux下是一个可执行文件 Windows: libxxx .dll 动态库的制作: gcc得到 .o 文件 得到和位置无关的代码( 阅读全文

posted @ 2023-09-04 17:00 廿陆 阅读(41) 评论(0) 推荐(0) 编辑

linux 静态库的制作与使用
摘要:什么是库? 库文件是计算机上的一类文件,可以简单的把库文件看成一种代码仓库,它提供给使用者一些可以直接拿来用的变量、函数或类 库是特殊的一种程序,编写库的程序和编写一般的程序区别不大,只是库不能单独运行 预处理 编译 汇编 链接 库文件有两种,静态库和动态库( 共享库),区别是:静态库在程序的链接阶 阅读全文

posted @ 2023-09-04 14:46 廿陆 阅读(25) 评论(0) 推荐(0) 编辑

Linux指令 and GCC
摘要:云服务器挂载Ubuntu系统 通过SSH协议 XShell文件进行远程连接 在XShell终端进行Linux命令 XFTP与云服务器中linux进行远程文件传输通过 SSH协议 Ctrl + L 快捷键 清空命令行 mkdir + 文件名 在当前路径下创建文件 例: mkdir test touch 阅读全文

posted @ 2023-09-03 21:50 廿陆 阅读(5) 评论(0) 推荐(0) 编辑

C++ STL deque
摘要:deque容器基本概念 功能:双端数组,可以对头端进行插入删除操作 deque与vector区别: vector对于头部的插入删除效率低,数据量越大,效率越低 deque相对而言,对头部的插入删除速度比vector快 vector访问元素时的速度会比deque快,这和两者内部实现有关 deque内部 阅读全文

posted @ 2023-09-01 11:30 廿陆 阅读(8) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示