![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux
zhao111222333444
这个作者很懒,什么都没留下…
展开
-
TCP--IO多路转接模型
classtcp.hppE> 1 #pragma once原创 2021-07-17 18:07:11 · 192 阅读 · 3 评论 -
【Linux】楼下大爷都看得懂的用户权限,文件权限相关指令及其示范!!
用户权限susudo新增用户,设置密码susu用于切换用户。Linux用户分为超级用户(root)和普通用户。超级用户拥有所有权限。切换示例:su rootsu devsudo表示普通用户在进行操作时有权利提权使用指令。示例:用sudo临时提权,使得dev(普通用户)可以更改目录的所有者chown–超级用户用来来改变目录拥有者的指令。可以使用sudo权限的普通用户由root用户加入sudo组完成:加入方法:新增用户,设置密码root用户可以增加普通用户新增用户:us原创 2021-06-09 17:08:33 · 874 阅读 · 6 评论 -
【网络\Linux】Linux网络编程-TCP,UDP套接字编程及代码示范
这里写目录标题UDPtcptcp和udpUDP 1 #include <cstdio> 2 #include <iostream> 3 #i原创 2021-05-25 15:42:42 · 180 阅读 · 1 评论 -
【Linux】Linux新手必备常用工具小结~
linux常用工具yumvimgcc/g++yumyun是linux软件包管理工具,就类似于我们的APP应用商店,里面有我们实现一些功能的工具。操作作用yum list查看能安装的软件清单yum search keyword按名称查找软件sudo yum install name安装指定工具(超级用户或sudo权限)sudo yum remove name卸载指定工具(超级用户或sudo权限)以下展示了一个压缩软件的安装卸载:yum list:原创 2021-05-18 18:11:45 · 2361 阅读 · 18 评论 -
【Linux/设计模式】线程池的实现
线程池任务类线程安全的结构线程池类线程池是一种非常典型的生产消费者模型。我们在利用线程处理任务的时候,线程过多会带来调度开销,有大量的时间用去创建和处理线程,进而影响缓存局部性和整体性能。所以就有了线程池,它维护着多个线程,等待着监督管理者分配可并发执行的任务。注意要将人物数据和处理方法一起传入进来,避免线程池和数据处理耦合,增大线程池开销。线程池在网络服务器访问等地方是非常适合的。整个编写的思路和注意事项都写在注释中了任务类里面需要包含数据和数据处理方式typedef void (*han原创 2021-05-16 10:36:27 · 136 阅读 · 1 评论 -
【设计模式】单例模式
#include<iostream>#include<mutex>using namespace std;class fullsingleClass {public: static int* get() {//双重锁模式 if (_data == nullptr) {//先判断是否为空,如果为空则进入,不为空说明已经存在实例,直接返回 //进入后加锁 my_mutex.lock(); if (_data == nullptr) {//再原创 2021-05-16 10:33:22 · 85 阅读 · 0 评论 -
【Linux】线程安全-条件变量(+互斥量)实现同步案例
利用互斥量+条件变量实现通过单一生产消费者模型搭配互斥锁模拟线程同步因为有个临界资源碗–需要互斥锁 1 #include <stdio.h>原创 2021-04-28 18:34:04 · 113 阅读 · 0 评论 -
信号量和条件变量(+互斥量)实现生产消费者练习
1 #include<cstdio> ...原创 2021-04-28 15:48:53 · 122 阅读 · 0 评论 -
【Linux】线程安全-互斥量(mutex)-售票系统案例
1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<unistd.h> 4 #include<pthread.h> 5 6 int tickets=100; 7 8 void* func(void* arg){ 9 //pthread_detach(pthread_self()); 10 while(1){E> 1...原创 2021-04-26 10:54:20 · 226 阅读 · 0 评论 -
【Linux】线程的创建和终止
1 #include <stdio.h> 2 #include <unistd.h> 3 #include <stdlib.h> 4 #include <pthread.h> 5 6 void *thr_entry(void *arg)//类型是规定的 7 { 8 printf("%s\n", (char*)arg); 9 while(1) {//去掉死循环普通线程正常退...原创 2021-04-22 15:20:03 · 78 阅读 · 0 评论 -
【Linux】signal演示
1 #include <stdio.h> 2 #include <unistd.h> 3 #include <stdlib.h> 4 #include <signal.h> 5 6 void sigcb(int signo) 7 { 8 printf("原信号是:%d\n", signo); 9 printf("替换成功!\n"); 10 } 11 int main () ..原创 2021-04-22 15:19:41 · 84 阅读 · 0 评论 -
【Linux】模拟信号阻塞及可靠非可靠信号演示
1 #include <stdio.h> 2 #include <unistd.h> 3 #include <stdlib.h> 4 #include <signal.h> 5 6 void sigcb(int num) 7 { 8 printf("原来的信号是::%d\n", num); 9 } 10 int main () 11 { 12 signa...原创 2021-04-11 15:20:33 · 87 阅读 · 0 评论 -
【Linux】进程间通信--共享内存实现及演示
读数据: 1 #include<stdio.h> 2 #include<unistd.h> 3 #include<stdlib.h> 4 #include<sys/shm.h> 5 #define IPC_KEY 0X12345678 6 int main(){ 7 //创建共享内存 8 int shmid=shmget(IPC_KEY,4096,IPC_CREAT|0664); 9 if(shmid<0)原创 2021-04-10 09:36:29 · 255 阅读 · 0 评论 -
【Linux】进程间通信--命名管道的创建和演示
read进程: 1 #include<stdio.h> 2 #include<unistd.h> 3 #include<stdlib.h> 4 #include<errno.h> 5 #include<fcntl.h> 6 #include<string.h> 7 #include<sys/stat.h> 8 int main(){ 9 //创建命名管道 10 umask(0);原创 2021-04-10 09:36:06 · 170 阅读 · 0 评论 -
【Linux】进程通信--模拟实现管道符
1 #include <stdio.h> 2 #include <unistd.h> 3 #include <stdlib.h> 4 #include <sys/wait.h> 5 6 int main () 7 { 8 int pipefd[2]; 9 int ret = pipe(pipefd); 10 if (ret < 0) { 11 perror("pipe er..原创 2021-04-10 09:35:34 · 125 阅读 · 0 评论 -
【Linux】进程通信--匿名管道读写特性演示
1.若管道中没有数据,则read会阻塞: 1 #include<stdio.h> 2 #include<unistd.h> 3 #include<stdlib.h> 4 #include<string.h> 5 6 int main(){ 7 int pipefd[2]; 8 int ret=pipe(pipefd); 9 if(ret<0){ 10 pe原创 2021-04-10 09:35:02 · 118 阅读 · 0 评论 -
【Linux】对IO操作中库函数和系统调用接口的理解
链接: link.链接: link.Q:我们知道库函数是对系统调用接口的封装,呢么对于库函数系列(fopen,fclose,fwrite,fread,fseek)和系统调用接口系列(open,close,write,read,seek)有什么区别呢?11.通过查看参数知道,他们的操作的句柄不同,f系列库函数是利用文件流指针操作文件,而系统调用接口是通过文件描述符操作文件的。22.在Linux下FILE文件中有一个int _fileno封装了文件描述符。看一段代码:我们可以用->来改变文原创 2021-04-06 16:09:50 · 178 阅读 · 0 评论 -
【Linux】系统调用IO接口
系统调用IO接口:openreadwritelseekclose一个小示例:以下演示的都是系统调用接口:open第一参数:文件路径名第二参数:必选操作选项:(O_REONLY,O_WRONLY,O_REWR)可选操作选项:(O_CREATE,O_APPEND等等(可以管道符链接))第三参数:产文件不存在创建新文件的权限,用的是八进制掩码(注意这时第二参数必有O_CREATE)返回值:文件描述符,失败-1readsize_t read(int fd,void* arr,si原创 2021-04-06 16:08:02 · 185 阅读 · 0 评论 -
【Linux】C语言文件操作库函数及示例
文件操作:fopenfwritefreadfseekfclose示例:fopenFILE* fopen(const char* psth,const char* mode);第一参数:路径第二参数:指定操作(r,r+,w,w+…)返回值:失败空,成功文件流指针fwritesize_t fwrite(const void* ptr,size_t size,size_t nmemb,FILE* stream)第一参数:要写到文件里的空间地址第二第三:块大小,块个数第原创 2021-04-06 16:07:43 · 200 阅读 · 1 评论 -
【Linux】基础指令
linux基础指令linux命令提示符linux命令基本格式基本操作符ls指令pwdmkdirrmdircplinux的基础指令是linux学习的最最最基础,所以说掌握和熟练使用linux基础指令和常用工具是非常重要的。linux命令提示符我们在使用linux是会看到这样的一串字符:[dev@localhost ~]$1.dev:当前的登录用户2.@:分隔符3.localhost:表示本地主机(就是当前这台计算机)4.~表示当前所在的目录(波浪代表是家目录)linux命令基本格式原创 2021-03-29 19:05:28 · 208 阅读 · 1 评论 -
【Linux】模拟实现简易shell程序
shell是一个命令行解释器,但很多人并不能很好地去理解它,但如果你能看懂这个简易的shell实现,问题就迎刃而解。1.shell是一个命令行解释器。2.它是一个程序,用来捕捉命令,并不会执行3.shell是用户能和内核更好了交流的程序...原创 2021-03-26 14:36:50 · 836 阅读 · 0 评论 -
【Linux】程序的编译与运行(4阶段实例+图解)
gcc下程序运行1 .预处理阶段:2.编译阶段:3.汇编阶段4.链接阶段这里我用linux系统的gcc编译器演示一下一个计算机程序的编译过程。程序的编译一般分为4个步骤:1.预处理阶段,2.编译阶段,3.汇编阶段,链接阶段。写一个简单的c代码:1 .预处理阶段:预处理一般要干的事情有展开头文件,宏定义替换以及相关的预处理指令#include<stdio.h>#define once 1#pragma once#就是代表预处理指令,所有带#的一般都写在文件的最上方,就原创 2021-03-23 13:51:59 · 1136 阅读 · 2 评论 -
【Linux】模拟实现进程等待(避免僵尸进程)
模拟实现进程等待wait函数waitpid函数模拟实现进程等待:僵尸进程会很大程度上加速我们资源的泄漏,非常不好,所以也有一系列解决办法。链接: 僵尸进程.一般情况下我们利用2个提供的库函数来实现进程等待。wait函数pid_t wait (int* status);详细解读:1 .pid_t就是一种有符号整形,用来记录进程的pid的,函数的返回值有三种1.(负1)-1->运行错误。2.0->没有子进程退出。3.返回退出的子进程pid。2 . status是一原创 2021-03-20 14:05:38 · 185 阅读 · 2 评论 -
【linux】图解加入sudo组的方法
1.(切换用户)输入:su root并输入管理员密码(注意,密码不会显示,输入完成回车就好了)2.输入sudo指令输入:visudo此时我们可以看到前面的用户已经切换到root用户3.找到sudo组位置输入::90(冒号90)sudo组一般在这个位置此时看到:4.然后按i键进入编辑模式,把你的用户名输入,其他按照上面的写按i,后写信息5.写好了之后按esc退出编辑模式,输入冒号加wq,进去底行模式保存退出按:eac :wq回车结束...原创 2021-03-20 11:10:01 · 1852 阅读 · 0 评论 -
【Linux】模拟僵尸进程和孤儿进程
僵尸进程和孤儿进程僵尸进程孤儿进程僵尸进程僵尸进程就是在父进程运行的情况下,子进程先行退出,并且父进程没有关注到子进程的退出信息,导致子进程的退出信息一直被操作系统所保留,导致占用资源,造成资源泄漏。示例:程序一直运行:这是我们去看进程的情况:看到pid是5666的进程变成了僵尸态。kill僵尸进程发现无法杀死。我们要结束掉父进程才可以杀掉僵尸进程。所以他对资源的占领是很可怕的。孤儿进程父进程先于子进程退出,此时子进程变成孤儿进程,在后台运行,父进程变为1号进程。示例:发现程序原创 2021-03-20 10:57:14 · 146 阅读 · 0 评论