
Linux
文章平均质量分 89
Linux相关知识
疯狂嘚程序猿
这个作者很懒,什么都没留下…
展开
-
Linux --- 高级IO
1、举例理解五种IO模型钓鱼例子:钓鱼我们认为有两步,第一步就是等鱼上钩(记为“等”),第二步就是钓鱼(记为“掉”)。阻塞IO:在内核将数据准备好之前,系统调用会一直等待。所有的套接字默认都是阻塞方式的。钓鱼例子之张三钓鱼:张三是一个非常认真的人,他在钓鱼时只顾钓鱼,完全不受外界任何事情的影响。在等鱼上钩的过程中,他就静静的坐在凳子上看着鱼鳔,即使有人找他他也不会搭理。当鱼上钩时,将鱼钓上来再继续下一的等。...原创 2021-07-31 16:02:10 · 578 阅读 · 3 评论 -
Linux---线程的同步和互斥
目录1、线程的互斥2、可重入VS线程安全3、线程的同步1、线程的互斥1)线程互斥的相关概念临界资源:被多个执行流共享的资源就称为临界资源,例如全局变量。 临界区:访问临界资源的代码称为临界区。 互斥:互斥保证了任何时刻只有一个线程进入临界区访问临界资源。 原子性:不会被任何机制打断的操作,该操作只有两态,要么已经完成要么还没开始(不能存在已经开始了,但是还没完成的情况,简单理解就是依据汇编代码就可以实现的)。2)通过订票示例引入互斥量#include<stdi原创 2021-04-21 16:53:06 · 1500 阅读 · 3 评论 -
Linux---线程控制
目录1、创建线程2、线程终止3、线程等待4、线程分离Linux下线程是使用进程模拟实现的,因此没有专门的系统调用来进行线程的各种操作(创建、终止等),Linux下线程控制都是通过POSIX线程库完成的。1、创建线程1)使用第三方库创建线程int pthread_create(pthread_t *thread, const pthread_attr_t *attr,void *(*start_routine) (void *), void *arg); ...原创 2021-04-21 16:51:20 · 373 阅读 · 0 评论 -
linux---线程概念
目录1、什么是线程?2、线程的优缺点3、线程异常、线程用途、4、Linux线程和进程的比较1、什么是线程?线程是一个进程内部的控制序列,在一个程序里的一条执行路线就叫做线程。所有的进程都至少有一个执行线程,线程在进程内部本质是在进程地址空间上运行(所有线程同时使用该进程的程序地址空间,只不过每个线程都有自己的执行流)。线程透过进程地址空间可以看到进程的大部分资源,将进程资源合理分配给每个执行流就形成了线程执行流。在Linux系统中,线程是用进程来模拟实现的,也就是说Linux中线程没原创 2021-04-21 16:50:05 · 264 阅读 · 0 评论 -
Linux---生产者消费者模型、信号量、基于环形队列的生产者消费者模型、线程池
一、线程概念1、什么是线程?2、线程的优缺点3、线程异常、线程用途4、Linux线程和进程的比较二、Linux线程控制1、创建线程一、线程概念1、什么是线程?线程是一个进程内部的控制序列,在一个程序里的一跳执行路线就叫做线程。所有的进程都至少有一个执行线程,线程在进程内部本质是在进程地址空间上运行(所有线程同时使用该进程的程序地址空间,只不过每个线程都有自己的执行流)。线程透过进程地址空间可以看到进程的大部分资源,将进程资源合理分配给每个执行流就形成了线程执行流。在.原创 2021-04-15 16:49:44 · 724 阅读 · 0 评论 -
Linux---进程信号
一、信号概念信号是进程之间事件异步通知的一种方式,属于软件中断。1、Ctrl+c结束前台进程当我们在shell中启动一个前台进程时,使用Ctrl+c可以结束这个前台进程。用户按下Ctrl-C时键盘输入产生一个硬件中断,被OS获取,解释成信号,发送给目标前台进程,前台进程因为收到信号,进而引起进程退出。注意:1)ctrl+c产生的信号只能发送给前台进程。一个命令后+&可以放到后台运行,后台运行的进程不能使用Ctrl+c终止同时后台进程shell不进行等待,可以接收其他命令。2原创 2021-04-12 21:20:43 · 4053 阅读 · 6 评论 -
Linux---基础IO
一、C语言文件操作及标准输入、输出和错误1.C语言文件操作1)打开、关闭文件FILE* fopen(const char * filename, const char * mode) 作用:以mode方式打开一个名为filename的文件 参数:filename文件名;mode文件的打开方式 返回值:文件流指针int fclose(FILE* stream); 作用:关闭一个打开的文件 参数:要关闭的文件...原创 2021-03-29 23:02:00 · 452 阅读 · 1 评论 -
Linux---mini shell程序
1.原理1)打印提示符格式:[用户名@主机名当前目录]提示符例如:[mou@VM-0-7-centos Linux_Lesson]$相关接口:获取当前用户名:char *getlogin(void);获取主机名:int gethostname(char* hostname,size_t len);获取当前工作路径:char* getcwd(char* buf,size_t len);2)用户输入命令使用字符串接受用户收入的命令,注意用户输入命令和选项的处理。例..原创 2021-03-22 18:28:44 · 1247 阅读 · 2 评论 -
Linux---进程控制
一、进程创建在计算机中,每一个加载到CPU上运行的程序都可以称为进程。在Linux中,每一个进程都可以通过fork函数创建若干个进程,我们将创建出来的进程称为子进程,将创建这些子进程的进程称为父进程。1.fork函数#include<unistd.h> //调用fork函数需要包含的头文件pid_t fork(void); //函数原型返回值:<0表示创建进程失败;创建成功会给子进程返回0,父进程返回子进程的pid。2.子进程创建示例 & fork函..原创 2021-03-15 13:14:55 · 2317 阅读 · 5 评论 -
Linux---centos常用开发工具(vim、gcc/g++、gdb、Makefile、git)
一、Linux软件包管理器yum1.什么是软件包? 将一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在一个服务器上, 通过软件包管理器可以很方便的获取到这些编译好的软件包, 直接进行安装。软件包和软件包管理器, 就好比 "App" 和 "应用商店" 这样的关系。yum(Yellow dog Updater, Modifified)是Linux下非常常用的一种包管理器. 主要应用在Fedora, RedHat, Centos等发行版上.2.rz/sz...原创 2021-01-29 22:35:56 · 2841 阅读 · 5 评论 -
Linux---进程间通信
1.为什么需要进程间通信? 每一个进程都由自己独立的虚拟地址空间,导致了进程的独立性,通过进程间通信可以让不同的进程进行协作。2.进程间通信的方式有哪些? 管道、共享内存、消息队列、信号、网络、Unix域套接字、信号量等,其中网络是目前最大的进程间通信技术。一、管道 从命令的额角度来看,前边我们使用的”命令连接符“ | 就是管道,例如:ps aux | grep mou命令,就是将ps aux命令的结果通过管道输出给grep(理解ps aux是命令也是...原创 2021-01-10 22:44:41 · 919 阅读 · 2 评论 -
Linux---进程概念
Linux进程的基本概念1.冯诺依曼体系结构 冯诺依曼体系结构是现代计算机的硬件体系结构,冯诺依曼体系结构定义了计算机应该包含输入设备、输出设备、存储器、运算器、控制器五大部分。每一部分的主要功能如下:输入设备:用于数据的采集,例如键盘、鼠标、网卡(网卡接收网络中的信息时就是输入设备)。输出设备:用于数据的输出,例如显示器、网卡(网卡在传输信息时就是输出设备)。存储器:用于数据的缓冲,在计算机中存储器就是内存。运算原创 2020-12-31 00:34:41 · 881 阅读 · 4 评论 -
Linux连接网络、修改账户密码
连接网络1.使用nmcli命令查看网卡信息2.使用nmcli c up enp03(使用nmcli查看自己的) 命令连接网络修改密码1.root用户下修改密码输入 encho "密码" | passwd --stdin 用户名2.直接修改当前用户密码直接输入passwd命令,回车输入密码即可。...原创 2020-11-30 19:23:29 · 1195 阅读 · 0 评论 -
Linux基本指令+使用举例、权限的认识和相关指令、Linux添加删除用户、shell的理解(超详细)
Linux的命令使用格式:命令名称 操作选项 操作对象 其中操作选项和操作对象可以没有,例如ls命令 一、目录命令ls---默认浏览目录下的文件信息(Linux下的目录就相当于Windows下的文件夹) 操作系统为每一个用户都创建了一个单独的受保护的目录,这个目录就是家目录,打开一个终端默认就在该用户的家目录下。Linux中,目录也是文件,文件并不以后缀名区分。而ls命令默认情况下浏览的就是当前用户的家目录,Linux支持目录的切换。 ...原创 2020-11-27 22:57:13 · 932 阅读 · 0 评论