![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux
文章平均质量分 95
WangGarrison
镜像网站 https://wanggarrison.top
展开
-
Linux:I/O复用——poll、epoll
文章目录pollpoll支持的事件类型使用poll实现TCP服务器pollpoll系统调用和select类似,也是在指定时间内轮询一定数量的文件描述符,以测试其中是否有就绪者。poll的原型如下:#include <poll.h>int poll(struct pollfd *fds, int nfds, int timeout);fds:struct pollfd类型的数组,用来传递用户关注的文件描述符以及事件类型,struct pollfd结构体如下:struct poll原创 2021-01-17 11:49:03 · 284 阅读 · 0 评论 -
Linux:I/O复用——select
I/O复用:一个程序可以同时监听多个(上千个)文件描述符上是否有事件发生,如果某些文件描述符有事件发生,则去处理发生了事件的文件描述符,其他没有事件发生的文件描述符,则不予理睬原创 2021-01-10 15:14:22 · 275 阅读 · 1 评论 -
Linux:线程(2)——线程安全、线程与fork
4. 线程安全5. 线程与fork原创 2020-11-27 15:10:13 · 395 阅读 · 0 评论 -
Linux:线程(1)——线程、线程库、线程同步
文章目录1. 线程的概念1.1 基本概念1.2 线程的实现方式1.3 Linux系统实现多线程的方式1.4 线程和进程的区别2. 线程库的使用2.0 头文件2.1 创建线程3. 线程同步4. 线程安全5. 线程与fork1. 线程的概念1.1 基本概念线程是进程内部的一条执行序列(执行流),线程不能单独存在,它是进程里面的一部分,一个进程至少有一条线程,该条线程称之为主线程(main方法代表的执行序列)对于Linux系统而言,线程就是一个轻量级的进程执行序列:一组有序指令的集合函数线程:可以通原创 2020-11-23 18:40:51 · 281 阅读 · 0 评论 -
Linux:进程间通信——共享内存、消息队列
文章目录共享内存共享内存系统调用消息队列消息队列系统调用进程间通信总结共享内存共享内存系统调用消息队列消息队列系统调用进程间通信总结原创 2020-11-16 23:05:03 · 236 阅读 · 0 评论 -
Linux:进程间通信——管道、信号量
进程间通信:IPC(InterProcessCommunication),并发的进程同时处理多个业务模块。多个业务模块的执行可能需要相互传递数据,也可能需要同步控制,因而进程间需要进行通信。对于点对点之间的原创 2020-11-14 14:51:12 · 530 阅读 · 0 评论 -
Linux:信号、僵尸进程
文章目录信号的引入:僵尸进程:处理僵尸进程的系统调用:信号信号查看Linux信号信号的响应方式修改信号响应方式用信号机制处理僵尸进程例:信号的二次绑定信号的发送用kill方法实现kill命令信号的引入:僵尸进程:进程中的指令已经执行完成,但是进程PCB结构还没有回收;父进程未结束,子进程结束,但是父进程没有处理子进程的退出状态,没有释放子进程占用的资源,该子进程就成为一个僵尸进程处理僵尸进程的系统调用:pid_t wait(int *result);//获取调用此方法的进程的子进程的退出码父原创 2020-10-26 20:29:57 · 216 阅读 · 0 评论 -
Linux:多进程编程、fork
void原创 2020-10-26 13:40:24 · 256 阅读 · 0 评论 -
Linux:文件操作的系统调用
Linux的I/O操作方法:系统调用系统调用由内核实现,在内核中执行,被程序(用户态)调用,区分于库函数的调用和实现,库函数的调用和实现、执行都在用户态文件操作系统调用的头文件:<unistd.h>1.打开文件int open(const char *pathname, int flag, /*int mode*/);filename: 文件路径+文件名flag:打开的标记O_RDONLY 只读O_WRONLY 只写O_RDWR 读写以上三个变量原创 2020-10-25 16:53:29 · 687 阅读 · 0 评论 -
Linux:makefile
makefile原创 2020-09-12 12:57:28 · 398 阅读 · 0 评论 -
Linux:gdb调试
gdbgdb是GNU开源组织发布的一个强大的Linux下的程序调试工具,它可以:启动你的程序,可以按照你的自定义的要求随心所欲的运行程序可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)当程序被停住时,可以检查此时你的程序中所发生的事可以改变你的程序,将一个BUG产生的影响修正从而测试其他BUGDebug与Releasegdb调试的是可执行文件的Debug版本,这里简单提一下Debug版本与Release版本生成的可执行文件可以有Debug版本和Release版本,g原创 2020-09-06 13:35:25 · 372 阅读 · 0 评论 -
Linux:Shell、BASH以及Shell Script简介
参考书籍《鸟哥的Linux私房菜》第四版 第10章认识与学习BASH原创 2020-09-04 18:53:00 · 470 阅读 · 0 评论 -
Linux:objdump和readelf的简单使用
Linux:objdump和readelf的使用原创 2020-09-01 11:55:29 · 382 阅读 · 0 评论 -
Linux:编译链接原理
在Linux下,当我们使用GCC来编译Hello Worid程序时,只须使用最简单的命令(源代码为hello.c)gcc hello.c./a.out事实上,上述过程可以分解为4个步骤,分别是预处理,编译,汇编和链接,如下图:预编译预编译阶段把.cpp和.h等文件编译成一个 .i文件,第一步预编译的过程相当于如下命令:gcc -E hello.c -o hello.i #-E表示只进行预编译,-o指定生成文件名预编译阶段主要处理那些源代码文件中以“#”开始的预编译指令。比如“#incl原创 2020-08-28 11:23:08 · 280 阅读 · 0 评论 -
Linux:gcc和g++的使用与区别
gcc与g++是什么gcc:是GCC中的GNU C Compiler(C 编译器)注意:GCC与gcc是两个东西g++:是GCC中的GNU C++ Compiler(C++编译器)GCC: GNU Compiler Collection(GNU 编译器集合),它可以编译C、C++、JAV、Fortran、Pascal、Object-C、Ada等语言。gcc与g++区别gcc和g++都可以编译c语言和c++如果是 .c文件,gcc按照c语言的方式去编译,g++会按照c++的方式编译;如果是 .cp原创 2020-08-18 21:11:56 · 257 阅读 · 0 评论 -
Linux:进程相关的操作
什么是进程在Linux中触发任何一个事件,系统都会将它定义为一个进程,并且给予这个进程一个ID,称为PID(Process ID),同时根据触发这个进程的用户与相关属性关系,给予这个PID一组有效的权限设置,操作系统中对进程的定义如下:进程(process):是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,即进行中的程序或运行中的程序,也就是程序的一次实例化程序(program):存储在磁盘上的二进制可执行文件,程序员编写源代码文件,由编译器编译链接生成的文件。Wi原创 2020-08-15 12:12:19 · 235 阅读 · 0 评论 -
Linux:文件的压缩与解压
Linux下常见的压缩包***.zip zip程序压缩的文件***.gz gzip程序压缩的文件***.tar tar程序打包的文件,并没有压缩过***.tar.gz tar程序打包的文件,并且经过gzip的压缩***.tgz 与***.tar.gz可以认为是一样的***.tar.xz tar程序打包的文件,并且经过xz的压缩虽然Linux文件的属性与文件后缀名没有绝对关系,但是为了帮助人们更好识别,适当的扩展名是可以有的。打包文件压缩/原创 2020-08-15 09:56:08 · 137 阅读 · 0 评论 -
Linux:文本编辑器vi/vim的使用
Linux:vi/vimvi:在所有的Linux发行版上面都内置的一个文本编辑器,很多软件默认也使用vi作为它们的编辑工具vim:可以认为是vi的高级版本,它具有程序编辑能力,可以用字体颜色来辨别语法的正确性,vim里面还加入了很多额外的功能,例如多文件编辑、区块复制等vi/vim的使用vim有三种基本操作模式,分别是(一般)命令模式,插入(编辑)模式,(命令行)末行模式一般命令模式使用vim打开一个文件就进入一般命令模式了,例如用vim 打开main.cvim main.c如果当前目录下原创 2020-08-13 22:20:48 · 746 阅读 · 6 评论 -
Linux:文件操作相关的命令
Linux:文件操作相关的命令1.创建文件创建普通文件touch filename #创建一个普通文件,eg: touch main.c创建目录文件mkdir direname #创建一个目录,eg: mkdir MyCode2.删除文件删除普通文件rm filename #删除一个普通文件删除目录文件rmdir direname #删除一个空目录,只能删除空目录rmdir -r direname #删除非空目录,-r选项让它递归地去删除3.拷贝文件拷贝普通文件原创 2020-08-13 11:48:32 · 256 阅读 · 0 评论 -
Linux:文件系统、文件类型与文件权限
Linux的文件系统现在Linux大多采用ext4文件系统(Fourth extended filesystem),ext4是索引式的文件系统,以ext4文件系统格式化磁盘时,将磁盘划分成三个区:1.superblock(超级区块):记录此文件系统的整体信息,包括inode区块的总量、使用量、剩余量,以及文件系统的格式与相关信息等;2.inode:很多inode节点,给每一个inode都分配一个编码,一个文件会有一个inode节点,在此inode中存储文件的属性信息以及存储文件内容的那些block号原创 2020-08-11 21:43:35 · 491 阅读 · 0 评论 -
Linux:目录组织结构、绝对路径与相对路径、目录相关命令
Linux目录组织结构在Linux下面,所有的文件与目录都是由根目录开始的,根目录是所有文件与目录的源头,然后再一个一个的分支下来,像树枝状,如下图Linux的FHS(Filesystem Hierarchy Standard)给出了每个特定的目录下应该存放什么样的文件,FHS目的是希望让用户可以了解到已安装软件通常放置于哪个目录下/bin:存放常用命令(即二进制可执行程序),主要有:cat、ls、mkdir、tar、mount、mv、cp、bash等常用命令/etc:存放系统配置文件/home原创 2020-08-11 12:20:49 · 765 阅读 · 0 评论