Linux
文章平均质量分 90
阳光丿洒脱
死亡不是终点,遗忘才是。
展开
-
Xshell链接不上云服务器的解决方案
1.ssh拒绝请求https://www.cnblogs.com/fh-fendou/articles/9938794.html转载 2020-05-08 10:46:10 · 1212 阅读 · 0 评论 -
复习Linux基础操作---权限操作
shell命令以及运行原理Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。如何理解?为什么不能直接使用kernel?从技术角度,Shell的最简单定义:命令行解释器(command Interpreter)主要包含:将使用者的命令翻译给核...原创 2019-11-18 15:10:26 · 223 阅读 · 0 评论 -
复习Linux基本操作----常见指令
Linux基本操作ls(list):相当于windows上的文件资源管理器在Linux终端中(xshell中)不能ctrl+c/ctrl+v来进行复制粘贴。ctrl+insert复制shift+insert粘贴原创 2019-11-17 19:35:36 · 541 阅读 · 0 评论 -
CentOS7关闭防火墙
firewalld的基本使用启动systemctl start firewalld 关闭systemctl stop firewalld 查看状态systemctl status firewalld 开机禁用systemctl disable firewalld 开机启用systemctl enable firewalldCentOS 7的服务管理启动一个服务...转载 2019-11-04 22:05:15 · 137 阅读 · 0 评论 -
如何在 Centos7 x86_64下将vim一键配置为一款强大的C++,IDE
vim功能很强大,但是对于我这样的小白很不友好然后就有一位大佬,为了辅助我这样的菜鸡,然后供我们一键搞定,在vim畅快编写代码的功能。首先强烈不推荐在root用户下使用,确保电脑连着网。在普通用户下执行此命令curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh &...转载 2019-10-22 18:36:12 · 229 阅读 · 0 评论 -
Linux系统编程----16(线程同步,互斥量 mutex,互斥锁的相关函数,死锁,读写锁)
同步概念所谓同步,即同时起步,协调一致。不同的对象,对“同步”的理解方式略有不同。如,设备同步,是指在两 个设备之间规定一个共同的时间参考;数据库同步,是指让两个或多个数据库内容保持一致,或者按需要部分保持 一致;文件同步,是指让两个或多个文件夹里的文件保持一致。等等而,编程中、通信中所说的同步与生活中大家印象中的同步概念略有差异。“同”字应是指协同、协助、互相 配合。主旨在协同步调,按预定的...原创 2019-09-05 20:43:57 · 390 阅读 · 0 评论 -
Linux系统编程----15(线程与进程函数之间的对比,线程属性及其函数,线程属性控制流程,线程使用注意事项,线程库)
对比进程 线程fork pthread_createexit (10) pthread_exit (void *)wait (int *) pthread_join (,void **)阻塞kill pthread_cancel ();必须到取消点(检查点):系统调用 man 7 pthreadsgetpid pthread_self ...原创 2019-09-03 20:18:24 · 293 阅读 · 0 评论 -
Linux系统编程---14(回收子线程,回收多个子线程,线程分离,杀死线程)
回收子线程pthread_join 函数阻塞等待线程退出,获取线程退出状态 其作用,对应进程中 waitpid() 函数。int pthread_join (pthread_t thread,void** retval); 成功:0,失败:错误号参数:thread:线程ID(注意 :不是指针);retval:存储线程结束状态对比记忆:进程中:main 返回值、exit 参数–&...原创 2019-09-03 17:25:31 · 1689 阅读 · 1 评论 -
Linux系统编程---13(线程控制函数,创建线程,循环创建多个线程,线程间共享全局变量)
线程控制函数pthread_self 函数获取线程 ID。其作用对应进程中 getpid() 函数。pthread_t pthread_self(void); 返回值:成功:0; 失败:无!线程 ID:pthread_t 类型,本质:在 Linux 下为无符号整数(%lu),其他系统中可能是结构体实现线程 ID 是进程内部,识别标志。(两个进程间,线程 ID 允许相同)注意:不应使用...原创 2019-09-01 11:04:30 · 767 阅读 · 0 评论 -
Linux系统编程----12(线程概念,Linux线程实现原理,栈中ebp指针和ebp指针,线程的优缺点和共享资源)
线程概念LWP:light weight process 轻量级进程进程:独立地址空间,拥有 PCB线程:也有 PCB,但没有独立的地址空间(共享) 区别:在于是否共享地址空间。独居(进程);合租(线程)。Linux 下:线程:最小的执行单位进程:最小分配资源单位,可看成是只有一个线程的进程。一个进程创建多少个线程,他们都共用一块地址空间,但是线程越多,占用cpu越多,也就是...原创 2019-08-29 21:54:31 · 482 阅读 · 1 评论 -
Linux系统编程---11(会话,守护进程,创建守护进程)
会话创建会话创建一个会话需要注意以下6点注意事项调用进程不能是进程组组长,该进程变成新会话首进程该进程成为一个新进程组的组长进程需要root权限(nbuntu不需要)新会话丢弃原有的控制终端,该会话没有控制终端该调用进程是组长进程,则出错返回建立新会话时,先调用fork,父进程终止,子进程调用setsidgetsid 函数获取进程所属的会话IDpid_t getsid(p...原创 2019-08-28 20:13:21 · 224 阅读 · 0 评论 -
Linux系统编程---17(条件变量及其函数,生产者消费者条件变量模型,生产者与消费者模型(线程安全队列),条件变量优点,信号量及其主要函数,信号量与条件变量的区别,)
条件变量条件变量本身不是锁!但它也可以造成线程阻塞。通常与互斥锁配合使用。给多线程提供一个会合的场所。主要应用函数:pthread_cond_init 函数pthread_cond_destroy 函数pthread_cond_wait 函数pthread_cond_timedwait 函数pthread_cond_signal 函数pthread_cond_broadcast ...原创 2019-09-08 17:29:04 · 1068 阅读 · 0 评论 -
Linux系统编程---18(线程池相关概念及其实现)
线程池一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个 线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不 仅能够保证内核的充分利用,还能防止过分调度。可用线程数量应该取决于可用的并发处理器、处理器内核、内 存、网络sockets等的数量线程池应用场景需要大量的线程来完成任务,且完成任务的...原创 2019-09-09 17:09:31 · 318 阅读 · 0 评论 -
centos给用户添加sudo权限
linux给用户添加sudo权限:有时候,linux下面运行sudo命令,会提示类似:xxxis not in the sudoers file. This incident will be reported.这里,xxx是用户名称,然后导致无法执行sudo命令,这时候,如下解决:进入超级用户模式。也就是输入"su -",系统会让你输入超级用户密码,输入密码后就进入了超级用户模式。(当...转载 2019-09-19 21:00:23 · 1232 阅读 · 0 评论 -
套接字编程---2(TCP套接字编程的流程,TCP套接字编程中的接口函数,TCP套接字的实现,TCP套接字出现的问题,TCP套接字多进程版本,TCP套接字多线程版本)
TCP模型创建流程图TCP套接字编程中的接口socket 函数#include <sys/types.h> /* See NOTES */#include <sys/socket.h>int socket(int domain, int type, int protocol);domain:AF_INET 这是大多数用来产生socket的协议,使用TC...原创 2019-09-21 11:02:20 · 1372 阅读 · 0 评论 -
Linux中netstat工具详解
简介Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。常见参数-a (all)显示所有选项,默认不显示LISTEN相关-t (tcp)仅显示tcp相关选项-u (udp)仅显示udp相关选项-n 拒绝显示别名,能显示数字的全...原创 2019-09-21 12:03:10 · 384 阅读 · 0 评论 -
网络基础 2-1(应用层,HTTP三点注意,HTTP协议格式, 最简单的HTTP服务器)
应用层应用层负责应用程序之间的数据沟通-----协议都是用户自己定的自定制协议:结构化数据传输序列化:将数据对象以指定的协议(数据格式)进行可用于持久化存储或者数据传输时的数据组织例如在分布式的系统中,需要把对象从网络的一端传输到另外一端;而网络中数据是以二进制流的方式来传递的 ;此时对象的序列化就是完成把对象转化成对应二进制流的方式;反序列化则是把二进制流转化为对象数据的方式。反...原创 2019-09-21 15:50:45 · 915 阅读 · 0 评论 -
高级IO--1 ---(五种典型IO,阻塞IO,非阻塞IO,信号驱动IO,异步IO, IO多路转接)
高级IO:五种典型IO:阻塞IO/非阻塞IO/信号驱动IO/异步IO/IO多路转接IO多路转接模型:select/poll/epoll五种典型IO阻塞IOIO操作的流程:等待IO操作条件具备,然后进行数据拷贝为了完成IO操作发起调用,若当前不具备IO操作条件,则等待,直到条件具备,完成IO操作后调用返回钓鱼的时候,手里一直握着鱼竿,等待????上钩。非阻塞IO为了完成IO操作发起调...原创 2019-09-28 17:25:29 · 716 阅读 · 0 评论 -
IO多路转接模型----(select的模型,select的优缺点,poll的模型,poll的优缺点)
IO多路转接模型:select/poll/epoll对大量描述符进行事件监控(可读/可写/异常)select模型用户定义描述符的事件监控集合 fd_set(这是一个位图,用于存储要监控的描述符); 用户将需要监控的描述符添加到集合中,这个描述符集合的大小取决于一个宏 _FD_SETSIZE = 1024将集合拷贝到内核中进行监控;在内核中对所有描述符进行轮询遍历判断是否有关心的事件就绪...原创 2019-09-29 18:27:52 · 565 阅读 · 0 评论 -
IO多路转接模型-----epoll
epoll:Linux下性能最高的多路转接模型epoll 有3个相关的系统调用.epoll_create功能:创建epoll,在内核中创建eventpoll结构体,size决定了epoll最多监控多少个描述符,在Linux2.6.8之后被忽略,但是必须>0。返回一个文件描述符,作为epoll的操作句柄struct eventpoll{...rb_root rbr(红黑树)......原创 2019-09-30 14:33:57 · 360 阅读 · 0 评论 -
Linu系统编程---10(Linux的终端,线路规程,网络终端,进程组)
终端输入输出设备的总称在 UNIX 系统中,用户通过终端登录系统后得到一个 Shell 进程,这个终端成为 Shell 进程的控制终端(Controlling Terminal),进程中,控制终端是保存在 PCB 中的信息,而 fork 会复制 PCB 中的信息,因此由 Shell 进程启动的其它 进程的控制终端也是这个终端。默认情况下(没有重定向),每个进程的标准输入、标准输出和标准错误输...原创 2019-08-28 18:00:16 · 180 阅读 · 0 评论 -
Linux系统编程----8(竞态条件,时序竞态,pause函数,如何解决时序竞态)
竞态条件(时序竞态):pause 函数调用该函数可以造成进程主动挂起,等待信号唤醒。调用该系统调用的进程将处于阻塞状态(主动放弃 cpu) 直 到有信号递达将其唤醒,等不到一直等int pause(void); 返回值:-1 并设置 errno 为 EINTR返回值:如果信号的默认处理动作是终止进程,则进程终止,pause 函数么有机会返回。如果信号的默认处理动作是忽略,进程继续处...原创 2019-08-18 10:18:34 · 250 阅读 · 0 评论 -
Linux系统编程下做一个简易的shell
自主实现一个shell--------minshellshell:命令行解释器-------解释执行用户的输入(完成相对应的功能)步骤1. 获取标准输入中的字符串2. 对字符串进行解析[ls -l -a] [ls ] [-l ] [-a]3. 创建子进程4. 子进程中进行程序替换5. 父进程进行进程等待%[^\n] 从缓冲区取数据的时候,遇到\n为止:【ls -l】...原创 2019-05-06 18:51:52 · 452 阅读 · 0 评论 -
linux系统编程之进程概念(操作系统---管理,进程创建,进程状态,进程优先级, 环境变量,程序地址空间,进程O(1)调度方法)
系统编程: 进程概念->进程控制->基础IO->进程间通信->进程信号->多线程进程概念冯诺依曼体系结构----现代计算机硬件体系结构冯诺依曼体系结构----现代计算机硬件体系结构 计算机五大硬件单元: 输入设备:键盘 输出设备:显示器 存储器:内存-外存--- 固态接口类型SATA SATA3 PCI-E(目前最好) 运算器:CP...原创 2019-05-01 13:10:06 · 381 阅读 · 0 评论 -
Linux系统编程之进程控制(进程创建,fork函数,进程中止,进程等待,程序替换)
进程创建fork()------复制,返回值,写时复制vfork()创建子进程—子进程与父进程共用同一块虚拟地址空间,为了防止调用栈混乱,因此阻塞父进程直到子进程调用exit()退出或者进行程序替换vfork创建的子进程不能在main函数中return 0;退出,因为释放资源后,父进程陷入混乱崩溃fork和vfork的联系fork和vfork在内核都是调用clone实现进程的创建...原创 2019-05-03 10:52:57 · 434 阅读 · 0 评论 -
Linux_linux常用工具---闲杂篇(除了vim, 还有哪些常用的牛逼的编辑器, 并能够横向对比编辑器之间的区别和优缺点.)
vim自行查找资料, 自行配置插件.借鉴别人的" 显示相关“”"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""set shortmess=atI " 启动的时候不显示那个援助乌干达儿童的提示"winpos 5 5 " 设定窗口位置...原创 2019-04-07 12:52:53 · 343 阅读 · 0 评论 -
Linux_linux常用工具------进度条程序
缓冲区对文件读写的影响:数据并没有直接写入文件,而是写入到缓冲区(内存)中,等到缓冲区中数据写满或者刷新缓冲区的时候,才会将数据真正的写入文件fflush(stdout)刷新。回车与换行:换行:输出位置移动到下一行回车:输出位置移动到起始位置**...原创 2019-04-07 12:31:50 · 189 阅读 · 0 评论 -
Linux_linux常用工具(git,vim ,gcc ,gdb,权限)超详解
git :项目版本控制工具 项目克隆:git clone 项目提交:git add(本地仓库提交) git commit -m “bak msg”(-m 备注信息) 同步到服务器:git push origin master(提交到主分支)**(提交时需要用户名和密码)**svn–集中式git —分布式 自己都有一个git仓库,vim 编辑器vim共有12种模式,最常...原创 2019-04-07 12:09:28 · 601 阅读 · 0 评论 -
Linux_linux常用工具之make/makefile详解
make/makefilemake/makefile: 项目自动化构建工具makefile:普通文本文件,记录了项目的构建流程规则。make: 一个解释程序,到当前执行make命令的目录下寻找makefile文件,并且对makefile 中记录的项目构建规则进行解释执行。makefile: 编写规则 目标对象:依赖对象 [tab]命令操作 Make执行规则解释执行时,在make...原创 2019-04-07 10:57:01 · 261 阅读 · 0 评论 -
Linux中最常见命令总结
Linux中最常见命令总结基础命令命令使用格式 命令名【选项参数】 【操作对象】 Ls -a workspace目录命令Ls 默认显示浏览当前文件目录-a 显示所有文件,不忽略以点开头的文件Linux下以.开头的文件是隐藏文件 每个目录下文件的两个特殊目录. 表示目录自身… 自身上一次路径 **-l 显示文件目录下详细信息** ...原创 2019-03-17 09:01:37 · 198 阅读 · 0 评论 -
Linux系统编程---8(全局变量异步I/O,可重入函数)
全局变量异步 I/O分析如下父子进程交替 数数 程序。当捕捉函数里面的 sleep 取消,程序即会出现问题。请分析原因。#include<stdio.h> #include<signal.h>#include<unistd.h>#include<stdlib.h>intn=0,flag=0; void sys_err(char* ...原创 2019-08-18 20:18:53 · 288 阅读 · 0 评论 -
Linux系统编程---4(进程间通信IPC,管道)
IPCLinux 环境下,进程地址空间相互独立,每个进程各自有不同的用户地址空间。任何一个进程的全局变量在另 一个进程中都看不到,所以进程和进程之间不能相互访问,要交换数据必须通过内核,在内核中开辟一块缓冲区, 进程 1 把数据从用户空间拷到内核缓冲区,进程2 再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通 信(IPC,InterProcessCommunication)。在进程间...原创 2019-08-13 20:52:26 · 318 阅读 · 0 评论 -
Linux系统编程--1(进程和程序,CPU和MMU,PCB,进程状态)
进程相关概念程序和进程程序:是指编译好的二进制文件,在磁盘上,不占用系统资源(cpu、内存、打开的文件、设备、锁…)进程:是一个抽象的概念,与操作系统原理联系紧密。进程是活跃的程序(程序员角度),占用系统资源,分配资源的基本单位(操作系统角度)。在内存中执行。(程 序运行起来,产生一个进程)进程与程序的关系程序就好像剧本,而进程呢就像一台戏。同一个剧本可以在多个舞台同时上演。同样,同一...原创 2019-08-09 20:26:01 · 730 阅读 · 0 评论 -
Linux系统编程----7(信号集,信号屏蔽,信号捕捉)
信号集操作函数内核通过读取未决信号集来判断信号是否应被处理。信号屏蔽字 mask 可以影响未决信号集。而我们可以在应 用程序中自定义 set 来改变 mask。已达到屏蔽指定信号的目的。信号集设定sigset_t set; //typedef unsigned long sigset_t;int sigemptyset(sigset_t* set); 将某个信号集清 0 成功:0;失败:...原创 2019-08-17 11:19:36 · 493 阅读 · 0 评论 -
Linux系统编程--3(exec 函数族,僵尸进程和孤儿进程,wait和wait_pid回收子进程)
exec 函数族fork 创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代码分支) ,子进程往往要调用一种 exec 函数以执行另一个程序。当进程调用一种 exec 函数时,该进程的用户空间代码和数据完全被新程序替换,从新程序 的启动例程开始执行。调用 exec 并不创建新进程,所以调用 exec 前后该进程的 id 并未改变。将当前进程的.text、.data 替换为所要加载的程...原创 2019-08-12 23:10:59 · 512 阅读 · 0 评论 -
套接字编程--1(UDP协议编程,端口号,传输层协议,网络字节序)
传输层的协议:ip地址:在网络中唯一标识一台主机IPV4:uint32_t DHCP NATIPV6 : uint8_t addr[16] —向前并不兼容IPV4每一条数据都必须包含源地址和目的地址:因为每条网络中的数据都必须确定是从那个主机来到那个主机去端口号在一台主机上唯一标识一个进程在一台主机上,当网卡收到网络数据,操作系统能够通过端口分辨出,这个数据该交给拿个进程处...原创 2019-08-12 12:23:36 · 1682 阅读 · 0 评论 -
Linux系统编程---6(信号的机制,信号4要素,Linu常规信号表,定时器)
信号的概念信号在我们的生活中随处可见, 如:古代战争中摔杯为号;现代战争中的信号弹;体育比赛中使用的信号枪… 他们都有共性:简单不能携带大量信息,只能带一个标志。满足某个特设条件才发送。Unix 早期版本就提供了信号机制,但不可靠,信号可能丢失。Berkeley 和 AT&T 都对信号模型做了更改,增加 了可靠信号机制。但彼此不兼容。POSIX.1 对可靠信号例程进行了标准化。...原创 2019-08-16 09:50:30 · 292 阅读 · 0 评论 -
Linu系统编程---9(SIGCHLD 信号,信号传参,中断系统调用)
SIGCHLD 信号SIGCHLD 的产生条件子进程终止时子进程接收到 SIGSTOP 信号停止时子进程处在停止态,接受到 SIGCONT 后唤醒时借助 SIGCHLD 信号回收子进程子进程结束运行,其父进程会收到 SIGCHLD 信号。该信号的默认处理动作是忽略。可以捕捉该信号,在捕捉函 数中完成子进程状态的回收。linux系统根据未决信号集来处理信号,多个信号进入未决信号集只...原创 2019-08-24 08:43:25 · 255 阅读 · 0 评论 -
Linux下文件的多进程拷贝
大文件拷贝假设有一个超大文件,需对其完成拷贝工作。为提高效率,可采用多进程并行拷贝的方法来实现。假设文件 大小为 len,共有 n 个进程对该文件进行拷贝。那每个进程拷贝的字节数应为 len/n。但未必一定能整除,我们可 以选择让最后一个进程负责剩余部分拷贝工作。可使用 len%(len/n)将剩余部分大小求出。为降低实现复杂度,可选用 mmap 来实现源、目标文件的映射,通过指针操作内存地址...原创 2019-08-15 09:26:09 · 1088 阅读 · 0 评论 -
Linux系统编程--2(环境变量,进程控制)
环境变量环境变量是指在操作系统中用来指定操作系统运行环境的一些参数每个人用电脑的习惯不一样,比如一般把文件放到磁盘,怎么管理文件,用什么编译器,所以,环境变量就是根据每个人使用操作系统的习惯来规定一些参数具体特征字符串(本质)有统一的格式:名=值[:值]值用来描述进程环境信息存储形式:与命令行参数类似。char*[]数组,数组名 environ,内部存储字符串,NULL 作为...原创 2019-08-10 19:41:36 · 385 阅读 · 0 评论