
【Linux】
文章平均质量分 91
Linux常用命令
天喜Studio
6月份城市(哈尔滨)之星TOP2、C/C++领域新星创作者。
展开
-
【Linux】Socket阻塞和非阻塞、同步与异步
阻塞阻塞模式下,send函数返回时,只代表需要发送的数据已经被拷贝到内核的发送缓冲区中并且如果发送缓冲区有足够的空间,数据可能已经开始从发送缓冲区发送到网络上。但是并不代表数据已经成功地被接收方接收当发送缓冲区空间不够大的时候,等到发送缓冲区空间足够大再发送调用recv函数并且套接字没有数据可读时,recv函数会阻塞当前线程,直到有数据可读或者出现错误。如果 recv 函数返回,返回值代表内核的接收缓冲区中的数据已经被拷贝到用户空间。/* Windows下UDP阻塞socket*/原创 2024-06-24 20:18:37 · 1164 阅读 · 0 评论 -
【Linux】I/O多路复用模型 select、poll、epoll
在监听 socket 时,需要分配多个线程/进程维护多个 socket 连接,I/O 多路复用技术就是用来使用一个进程来监听维护多个 socket 连接多路:I/O 状态:可读、可写复用:使用一个线程/进程监听处理 I/O 事件,复用多个 socket 请求一、select 模型select 原理:1.创建一个文件描述符集合 fd_set set 0 不监听 1 监听2.设置文件描述符的状态FD_ZERO(&set); 初始化监听集合,将位码初始化为 0FD_SET(int s原创 2024-06-20 17:59:24 · 1290 阅读 · 0 评论 -
【Linux操作系统】死锁 | 预防、避免死锁
当多个进程竞争资源而处于阻塞状态,相互等待。如果没有外力推进,进程无法继续执行任务,这种情况称为死锁(Deadlock)。例如,进程A锁定了资源1并试图锁定资源2,而进程B已经锁定了资源2并试图锁定资源1。如果这两个进程都不放弃它们已经锁定的资源,那么它们都将永远无法获取到它们需要的资源,从而导致死锁。或者说每个进程所等待的事件是该组中其它进程释放所占有的资源。原创 2024-02-26 22:55:39 · 1342 阅读 · 3 评论 -
【Linux】线程Pthread的概念 | NPTL线程库函数
线程是操作系统能够进行调度和执行的最小单位。它是进程内执行的一个独立单元,与同一进程中的其他线程共享进程的地址空间和系统资源。线程能减少程序在并发执行时所付出的时空开销,使操作系统具有更好的并发性。二、线程和进程一般情况下进程包含线程,线程比进程更轻量(体积更小,开销更小)进程是最小的分配资源单位,线程是最小的调度单位线程不分配内存,线程创建于进程中,与进程共享资源,访问进程的内存,完成特定任务类 Unix 系统中,早期是没有“线程”概念的,80 年代才引入,借助进程机制实现出了线程的原创 2024-02-06 22:18:30 · 958 阅读 · 0 评论 -
【Linux】Daemon守护进程详解
孤儿进程是父进程结束后,自己仍继续运行的进程。孤儿进程会被1号进程(init进程)收养。每当出现一个孤儿进程的时候,内核就把孤儿的父进程设置为init,而init进程会循环地wait()它的已经退出的子进程。二、守护进程守护进程是一种在后台持续运行的特殊进程。守护进程一般不与用户直接交互,它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是一种特殊的孤儿进程。守护进程丢弃了原有的控制终端,因此需要创建新会话以脱离控制终端。会话是多个进程组的集合。如何建立新原创 2024-02-01 15:29:37 · 1276 阅读 · 0 评论 -
【Linux】mmap内存映射
mmap内存映射是一种可以用于进程间通信的技术,通过mmap,多个进程之间可以直接读取和修改磁盘上的文件内容,从而实现进程通信。同时也不需要像传统方式那样先将文件读入到用户空间,然后再从用户空间写入内核空间。这种映射机制提高了文件访问的效率。(相比于read()减少了一次拷贝开销)#include void* mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset); 函数参数:原创 2024-01-31 20:58:53 · 1120 阅读 · 0 评论 -
【Linux】匿名管道pipe和有名管道fifo详解
进程间通信IPC进程间通信是操作系统提供的一种机制,用于多个进程之间进行数据通信,实现资源协调与共享。IPC:Interprocess Communication 进程间通信例如在单任务处理器中,多个进程之间就依靠着进程间通信 调度CPU,使得多个进程高效率并发执行Linux中进程间通信的方式:管道:半双工通信方式,分为匿名管道(pipe)和有名管道(fifo),用于具有亲缘关系之间的进程通信消息队列:进程利用消息队列通过发送和接收消息进行通信信号:主要用于消息的通知和进程控制,不能传原创 2024-01-31 15:58:54 · 1447 阅读 · 0 评论 -
【Linux】wait()和waitpid()函数
在Linux或Unix系统中,子进程只能由父进程进行回收。如果进程结束但是进程资源仍未被回收,这个进程将会变为僵尸进程,会导致内存泄漏和系统性能下降。使用getchar() 阻塞父进程的执行,子进程结束后父进程未对其进行回收原创 2024-01-30 11:11:53 · 910 阅读 · 2 评论 -
【Linux】fork()函数
操作系统给用户提供了一系列的函数接口,让用户进行与进程有关的编程。一、fork()函数fork()函数用于创建一个子进程,调用fork()函数的是父进程该子进程与父进程几乎完全相同,父子进程的代码共享,但是他们的进程id(PID)不同。fork()函数拥有两个返回值:父进程的fork()函数返回子进程的pid子进程的fork()函数返回0父进程进行代码的全部,子进程执行从fork()函数后的代码,父子进程同时执行fork()函数的使用举例:原创 2024-01-29 18:30:02 · 1123 阅读 · 0 评论 -
【Linux】进程概述
进程在不同角度下可以有不同的定义:进程是进程实体的运行过程。进程是系统进行资源分配和调度的一个单位,是一个任务执行的逻辑单元。在早期计算机的结构中,进程是一个程序及其数据在处理机上顺序执行时所发生的活动。在当代计算机结构中,进程与程序显然是截然不同的概念,程序与进程没有必然联系在进程执行时如果没有数据往来,程序文件被删除甚至都不会影响进程的运行。进程拥有程序所没有的特征:二、进程的特征1.动态性:进程的实质是进程实体的执行过程,它是有生命的,具有各种状态。2.并发性:指多个进程原创 2024-01-26 14:21:30 · 1122 阅读 · 0 评论 -
【Linux】Linux常用命令—磁盘管理、压缩包管理
磁盘管理mount格式: mount [-t vfstype] –o options 设备 挂载点-t vfstype: 指定文件系统的类型,通常不用指定,mount会自动选择正确的类型。常用类型有:光盘或光盘镜像:iso9660DOS fat16文件系统:msdosWindows 9x fat32文件系统:vfatWindows NT ntfs文件系统:ntfsmount windows文件网络共享:smbfsUNIX(LINUX) 文件网络共享:nfs-o optio原创 2023-11-10 16:19:33 · 223 阅读 · 1 评论 -
【Linux】Linux常用命令—用户管理
whoamichmodchownuseraddpasswdsuuserdelapt-get、deb包安装、源码安装whoami格式: whoami功能:查看当前登陆的是哪个用户chown chown 用户:用户组 文件名功能:更改文件/目录的所有者(用户或用户组)root用户把自己的一个文件拷贝给某个用户,为了让用户能够存取这个文件,root用户应该把这个文件的属主设为该用户否则,该用户无法存取这个文件。举例:先使用su命令切换root用户将aa文件改原创 2023-11-10 15:57:24 · 237 阅读 · 0 评论 -
【Linux】详解Linux中的Makefile文件
Makefile文件是Linux中用于编译和链接的自动化工具,是GNU工具(vi、gdb、makefile)的一部分。为什么需要编写Makefile文件程序的生成过程分为:编译期(源文件.c编译生成.o文件)和链接期(把所有.o文件链接生成可执行文件)。如果程序更新,下次生成可执行文件会对所有文件再次执行这个生成过程。因此需要Makefile文件,在修改源文件后,只编译修改后的文件,节省编译时间。Makefile的执行原理程序第一次编译时,会保存所有生成的中间文件.o文件,下次编译时只编译修改的原创 2023-10-16 19:55:48 · 903 阅读 · 0 评论 -
【Linux】Linux常用命令—文件管理(下)
主页专栏有更多知识,如有疑问欢迎大家指正讨论,共mvcpmore、lesshead、taillnoddudffindgrepmv格式: mv 文件名 已存在的文件夹 mv 文件(夹)旧名 文件(夹)新名功能:1.mv文件至已存在文件夹,移动文件2.重命名(如果目标文件已存在,文件覆盖)举例:在这里插入图片描述cp cp 原文件名 新文件名功能:拷贝文件 cp 原文件夹名 新文件夹名 -r功能:拷贝文件夹 cp 原文件夹名 已存在文同进步!原创 2023-10-05 11:00:00 · 497 阅读 · 0 评论 -
【Linux】Linux常用命令—文件管理(上)
终端是一种让用户与系统交互的方式,用户通过终端输入命令,系统通过终端输出结果根目录下的文件夹二、文件命令lscdpwdcatechomkdirrmdirtouch1.创建文件夹(通过空格分隔可以一次创建多个)2.创建有所属关系的文件夹:使用/ 代表文件夹1中包含文件夹2, 其中-p为自动建立好尚不存在的目录原创 2023-10-04 16:26:21 · 293 阅读 · 0 评论