Linux系统编程
文章平均质量分 97
此专栏内容针对Linux初学者系统学习,也可对中阶程序员作为帮助手册,查缺布鲁、复习。干货精炼,学习成本低,主从C++方向、运维必知必会点等多角度学习。
Choice~
华为云享专家,阿里云专家,全网900w阅读量
展开
-
Linux系统编程-线程同步
现代操作系统基本都是多任务操作系统,即同时有大量可调度实体在运行。都需要访问/使用同一种资源多个任务之间有依赖关系,某个任务的运行依赖于另一个任务这两种情形是多任务编程中遇到的最基本的问题,也是多任务编程中的核心问题,同步和互斥就是用于解决这两个问题的。**互斥:**是指散步在不同任务之间的若干程序片断,当某个任务运行其中一个程序片段时,其它任务就不能运行它们之中的任一程序片段,只能等到该任务运行完这个程序片段后才可以运行。一个公共资源同一时刻只能被一个进程或线程使用。原创 2022-10-11 11:45:00 · 326 阅读 · 6 评论 -
Linux系统编程-守护进程|线程
进程组,也称之为作业。BSD于1980年前后向Unix中增加的一个新特性。代表一个或多个进程的集合。每个进程都属于一个进程组。在waitpid函数和kill函数的参数中都曾使用到。操作系统设计的进程组的概念,是为了简化对多个进程的管理。当父进程,创建子进程的时候,默认子进程与父进程属于同一进程组。进程组ID为第一个进程ID(组长进程)。原创 2022-10-07 10:13:45 · 218 阅读 · 1 评论 -
系统编程【信号篇】硬核教程,没有之一 |信号集 |信号捕捉|不可重入,可重入函数
信号的概念信号是 Linux 进程间通信的最古老的方式。信号是软件中断,它是在软件层次上对中断机制的一种模拟,是一种异步通信的方式。信号可以导致一个正在运行的进程被另一个正在运行的异步进程中断,转而处理某一个突发事件。“中断”在我们生活中经常遇到,譬如,我正在房间里打游戏,突然送快递的来了,把正在玩游戏的我给“中断”了,我去签收快递( 处理中断 ),处理完成后,再继续玩我的游戏。这里我们学习的“信号”就是属于这么一种“中断”。原创 2022-10-07 10:30:00 · 282 阅读 · 0 评论 -
【亡羊补牢篇】进程间通信 | 管道| 共享存储映射
管道也叫无名管道,它是是 UNIX 系统 IPC(进程间通信) 的最古老形式,所有的 UNIX 系统都支持这种通信机制。半双工,数据在同一时刻只能在一个方向上流动。数据只能从管道的一端写入,从另一端读出。写入管道中的数据遵循先入先出的规则。管道所传送的数据是无格式的,这要求管道的读出方与写入方必须事先约定好数据的格式,如多少字节算一个消息等。管道不是普通的文件,不属于某个文件系统,其只存在于内存中。管道在内存中对应一个缓冲区。不同的系统其大小不一定相同。原创 2022-10-03 11:15:00 · 204 阅读 · 2 评论 -
Linux系统编程 进程控制
在每个进程退出的时候,内核释放该进程所有的资源、包括打开的文件、占用的内存等。但是仍然为其保留一定的信息,这些信息主要主要指进程控制块PCB的信息(包括进程号、退出状态、运行时间等)。父进程可以通过调用wait或waitpid得到它的退出状态同时彻底清除掉这个进程。wait() 和 waitpid() 函数的功能一样,区别在于,wait() 函数会阻塞,waitpid() 可以设置不阻塞,waitpid() 还可以指定等待哪个子进程结束。原创 2022-09-30 23:45:00 · 668 阅读 · 0 评论 -
Linux系统编程 -文件和目录操作函数
dup() 和 dup2()是两个非常有用的系统调用,都是用来复制一个文件的描述符,使新的文件描述符也标识旧的文件描述符所标识的文件。这个过程类似于现实生活中的配钥匙,钥匙相当于文件描述符,锁相当于文件,本来一个钥匙开一把锁,相当于,一个文件描述符对应一个文件,现在,我们去配钥匙,通过旧的钥匙复制了一把新的钥匙,这样的话,旧的钥匙和新的钥匙都能开启这把锁。原创 2022-09-28 10:30:00 · 1361 阅读 · 3 评论 -
Linux系统编程 Makefile-IO
一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。Makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE。原创 2022-09-25 21:56:26 · 374 阅读 · 3 评论 -
Linux系统编程-vim-gcc-动态库静态库
此篇内容全是知识点,可用作帮助手册,一些晦涩难懂的我已测试教程及运行截图;注意:那些没实现的不是不重要,而是需要自己动手实践一遍,不然纯理解,隔天就忘.gedit是一个GNOME桌面环境下兼容UTF-8的文本编辑器。它使用GTK+编写而成,因此它十分的简单易用,有良好的语法高亮,对中文支持很好,支持包括gb2312、gbk在内的多种字符编码。gedit是一个自由软件。这是 Linux 下的一个纯文本编辑器,但你也可以把它用来当成是一个集成开发环境 (IDE), 它会根据不同的语言高亮显现关键字和标识符。原创 2022-09-23 09:42:21 · 420 阅读 · 0 评论 -
Linux系统编程基本命令
我们这里使用的是ubuntu,为什么不适用centous呢?它们相差不是很大,原因是ubuntu适合开发者使用,centous很适合结合Oracle。都是干货,标明了哪些是重点,需要掌握的模块,哪些是只要了解,这样的学习成本非常小。**/:**根目录,一般根目录下只存放目录,在Linux下有且只有一个根目录。所有的东西都是从这里开始。当你在终端里输入“/home”,你其实是在告诉电脑,先从/(根目录)开始,再进入到home目录。可执行二进制文件的目录,如常用的命令ls、tar、mv、cat等。原创 2022-09-20 19:06:25 · 7143 阅读 · 10 评论