![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux
文章平均质量分 96
Grozta
这个作者很懒,什么都没留下…
展开
-
[最佳实践]FRPC公网链接:在家也可以炼实验室的丹了
如果我们在家里,使用的家里的网络也想连接实验室的机器的话,那么就需要一个tcp的转接服务器才可以。frpc就是这样一个免费的转接服务器,他使用自己的域名,转发tcp或者http请求,使得我们可以链接到实验室内部的机器的指定的端口的程序原创 2024-03-06 13:04:36 · 1092 阅读 · 0 评论 -
[最佳实践] Windows上构建一个和Linux类似的Terminal
目的是在Windows上构建一个和Linux类似的Terminal,让Windows炼丹和Linux一样舒适,同是让Terminal取代Xshell完成远程链接。想要在Terminal中实现ssh快捷链接,就是需要再pwsh中引导ssh工作,也就是说只要把启动命令中加入ssh登录语句就可以实现在Terminal中进行ssh,从而代替Xshell。原创 2024-03-03 15:04:48 · 1391 阅读 · 0 评论 -
进程初识
进程初识1.查看进程 ps -aux;ps -ef 查看进程信息ps -aux | grep loop pid_tgetpid(void) 将这个函数运行到要查看的程序中,她的返回值就是进程id号 /proc 在/proc/目录下全是以进程号为名称的文件夹 获取调...原创 2019-06-27 10:15:05 · 205 阅读 · 0 评论 -
程序地址空间(是程序编译时的给定程序内存安排方式)进程的空间(百度网盘)
程序地址空间(是程序编译时的给定程序内存安排方式)进程的空间(百度网盘)物理内存:32位系统的内存最大为4G 在编译程序时就已经安排好了一个进程的全部地址分布,而且在这个安排好的进程里,所有的地址都是连续的(但是这是安排而已,是一种虚拟的安排,不存在实际的物理内存中)页表的存在:1、由于程序的空间是连续的,但是为了追求内存的利用率,所...原创 2019-06-27 10:16:10 · 185 阅读 · 0 评论 -
make的解释规则和Makefile的编写
make的解释规则[x]对象:依赖的对象文件(第一行执行成功就退出,否则就往下找)[x]make打开makefile文件之后,找寻第一个目标对象名称 若没有找到:认为没有生成的对象,报错退出 若找到了:判断对象文件是否存在, 若对象文件存在,则向下查找,执行下一行命令这个就是正确的这个就是错误的...原创 2019-06-27 10:17:26 · 423 阅读 · 0 评论 -
git:项目管理工具
git:项目管理工具Svn 服务器 :Git 分布式 : git clone https://.................................... #下载下来代码 自己修改 提交到本地 ...原创 2019-06-27 10:17:59 · 553 阅读 · 0 评论 -
gdb调试器的的操作
gdb调试器的的操作 向程序中加入符号信息 gdb ./ main 加载main程序到gdb调试器中 run运行程序 r bt查看函数调用栈—— start开始调试 print/p查看 print/p tmp 打印变量tmp的详细信息 list是查看当前调试行前后5行代码 l 常见操作 l...原创 2019-06-27 10:19:00 · 113 阅读 · 0 评论 -
Linux的/目录的含义(部分)
Linux的/目录的含义(部分) boot 系统的引导文件 etc 系统的配置文件 lib 系统库文件 bin 命令文件 dev 设备文件 mnt 外部挂载文...原创 2019-06-27 10:19:42 · 148 阅读 · 0 评论 -
信号----进阶总结:
总结:信号:信号的生命周期:信号的产生-》在进程中注册-》在进程中注销-》信号处理信号的产生:硬件长产生:Ctrl+c 中断信号 Ctrl+| Ctrl +z进程停止软件产生:kill -[signum] 就是上面信号的数字(这些数字就是宏) -p pid (向指定进程发送指定信号)系统调用接口 man 2 kill,----->int kill(pid_...原创 2019-06-27 15:11:51 · 144 阅读 · 0 评论 -
线程-------创建、终止、和等待 分离
非常重要线程的概念: 先说进程:传统操作xi'to系统中使用pcb来描写一个程序的运行 ----> pcb就是进程 linux下的pcb用来模拟实现线程,因此linux下的pcb实际就是一个轻量级的LWP 线程 LWP(light weight process) 这个轻量级进程因为共同大部分进程资源;相较与传统进程更加轻量化 进程是资源分配的基本...原创 2019-06-29 11:05:01 · 123 阅读 · 0 评论 -
线程 : 线程安全: 互斥、互斥锁 死锁
线程安全:多个线程对临界资源进行访问而不会对数据造成二义性如何实现线程安全:同步+互斥 同步:对临界资源访问的时序和理性 互斥:对临界资源同一时间访问的唯一性如何实现互斥:互斥锁 实现线程互斥的五步1、定义互斥锁变量 pthread_mutex_t2、对互斥锁变量初始化 ...原创 2019-06-29 20:35:35 · 270 阅读 · 0 评论 -
进程初识 —僵尸进程 、环境变量
进程初识1.查看进程 ps -aux;ps -ef 查看进程信息ps -aux | grep loop pid_tgetpid(void) 将这个函数运行到要查看的程序中,她的返回值就是进程id号 /proc 在/proc/目录下全是以进程号为名称的文件夹 获取调...原创 2019-06-27 18:26:26 · 128 阅读 · 0 评论 -
vfork存在意义
vfork存在意义:由于他创建进程时与父进程公用一块地址空间,那么他的创建进程的效率很高。但是fork后来实现了写时拷贝技术,他的效率大大提高,而且进程独立,所以vfork就被淘汰来``//这是个体会vfork()的demo5 //父进程调用vkrok会阻塞6 //7 // pid_t vfork(void);8 #include <unistd.h>9 ...原创 2019-06-23 19:27:51 · 363 阅读 · 0 评论 -
进程间通信——共享内存、信号量
共享内存共享内存:最快的进程间通信方式管道通信:通信的本质是通过内核的缓冲区来实现通信进程1:将用户态缓冲区拷入内核态缓冲区进程2:将内核态缓冲区拷入用户态缓冲区(涉及两次的内核态与用户态的拷贝)共享内存原理:1.在物理内存中开辟一块内存空间2.将这块内存空间通过页表映射到进程的虚拟地址空间中3.进程可以通过访问这块内存修改数据,而其他映射到同一块物理内存的进程获取的物理内存的...原创 2019-06-23 18:36:46 · 393 阅读 · 0 评论 -
进程间通信——匿名管道和命名管道
匿名管道:利用内核中的一块缓冲区,可以通过系统调用的IO进行进程间的通信,但是由于这个缓冲区没有名字,所以只有在具有血缘关系的进程通过进程复制,才能公用一个缓冲区进行通信特性:1.(半双工通信)2.读写特性:管道是一块缓冲区,管道写满了,write()就会阻塞管道中没有 数据read()就会阻塞。若是所有的write()都关闭,这read()读取完所有数据之后,返回0(不会堵塞)...原创 2019-06-23 18:49:59 · 445 阅读 · 0 评论 -
文件系统
文件系统数据的存储流程:数据的删除流程:硬链接和软链接的区别原创 2019-06-23 18:53:48 · 157 阅读 · 0 评论 -
动、静态库的生成和使用
库 环境是CentOS 7库文件:不包含main函数的函数文件(里面有.c和.h文件)由于.h文件是.c文件的头文件,预处理会直接加载处理到.c中,所以在生成库文件时,只需要处处理.c文件一下演示的库文件是main.c 生成的动态库文件是 libchild.so生成的静态库文件是libchild.a库文件的命名习惯 动态库文件 ...原创 2019-06-23 18:59:21 · 220 阅读 · 0 评论 -
[基础IO] 下 缓冲区
缓冲区:printf("hello world")printf打印的数据并不会立即写入到标准输入文件中,而是先将数据写入到一块缓冲区中,等待缓冲区写满或者是手动刷新缓冲区fflush(stdout),才会将数据一次写入到文件中;fflush(stdout);#include <stdio.h> #include <unistd.h> #include ...原创 2019-06-23 19:04:27 · 90 阅读 · 0 评论 -
[基础IO] 上 open fd | FILE*的区别
IO库函数fopen()、fread()、fwrite()、fclose()、fseek()IO函数的说明IO函数 参数说明 实例 FILE *fopen(const char *path, const char *mode); fopen返回的是文件流指针 FILE *fp = fo...原创 2019-06-23 19:08:27 · 630 阅读 · 0 评论 -
进程等待
进程等待有两个接口:1、pid_t wait(int *);// 阻塞等待任意一个进程退出,然后传入wait的参数就会被修改成等待的pid#include <stdio.h>#include <stdlib.h>int main(){ int pid = fork(); if (pid < 0){ peer...原创 2019-06-23 19:15:10 · 229 阅读 · 0 评论 -
(perror,strerror,errno)函数调用或者系统调用的错误原因的处理
NAMEperror - print a system error messageSYNOPSIS#include <stdio.h>void perror(const char *s);#include <errno.h>const char *sys_errlist[];...原创 2019-06-23 19:22:47 · 479 阅读 · 0 评论 -
进程终止
进程创建:是利用structtask_struct{..........}创建的进程,然后将父进程的数据拷入新建的进程,然后操作系统分配给新创建进程一个pcb号进程终止:进程退出退出场景:正常的符合预期退出、不符合预期的退出异常退出:段错误如何退出:三种方法 main函数中的return 退出前刷新缓冲区 ...原创 2019-06-23 19:25:12 · 173 阅读 · 0 评论 -
信号----初步认识
信号: 一支穿云箭,千军万马来相见(放下手头的工作,来集合) 信号用于通知一个事件的发生,会打断当前的操作,去处理这个事件 前提是:能够识别这个信信号的种类多,每个代表不同的事件信号是有生命周期的:产生 > 注册 > 注销 > 处理【阻塞】:阻止信号的被处理操作系统中的信号种类:k...原创 2019-06-23 18:23:31 · 108 阅读 · 0 评论