LINUX系统及网络
文章平均质量分 55
LLINUX
残局的王将
这个作者很懒,什么都没留下…
展开
-
HTTP(一)
其中的Key:value就是协议中需要携带的报头;该网址就是使用的大名鼎鼎的http协议。HTTP网络是一个基于TCP的网络协议。4.一般较大的文件都用Post方式传参.所请求的资源是在哪个主机的哪个端口上。声明用户的操作系统和浏览器版本信息。当前页面是从哪个页面跳转过来的。告诉客户端接下来要去哪里访问。1.Get通过URL传参。2.Post通过正文传参。用于在客户端存储少量信息。3.Get方式不私秘.原创 2023-06-06 18:51:36 · 97 阅读 · 0 评论 -
LINUX 守护进程(番外)
其中:"/dev/null"是信息黑洞,所有写进去的数据都会消失。原创 2023-06-04 11:23:27 · 113 阅读 · 0 评论 -
LINUX TCP网络
文件描述符;维护连接的数量原文件描述符;struct sockaddr_in 转sockaddr(输入输出型);sizeof(...)(输入输出型)原文件描述符;struct sockaddr_in 转sockaddr;va_end(ap);int fd;public:// 1.创建socketexit(1);原创 2023-06-02 19:04:07 · 73 阅读 · 0 评论 -
LINUX UDP网络
话接上文,我们大致的介绍了网络的分层,但是具体实现是如何的呢?本章内容将从编码层面实践。UDP网络的C/S模型实现较为简单,我们从UDP服务端开始介绍。原创 2023-06-01 19:39:03 · 30 阅读 · 0 评论 -
网络初步概述
在初步谈完操作系统后,我们来看看网络,网络其实没有那么神秘,我们大可把远程通信看作是一根很长的传输线。为了方便软件和网络的 问题归类,解耦,以及便于维护,我们将协议分层。原创 2023-05-31 19:56:35 · 33 阅读 · 0 评论 -
LINUX多线程(五)
信号量本质是一个计数器,且该计数器的++和--是原子的,若线程申请信号量失败就会被挂起。sem:需要初始化的信号量pshared:传入0为线程间共享,非0则进程间共享value:信号量的初始值初始化成功为0,失败返回-1信号量++;成功返回0,失败-1信号量--;成功返回0,失败-1销毁信号量代码demo。原创 2023-05-28 21:31:11 · 45 阅读 · 0 评论 -
LINUX多线程(四)
话接上文,我们介绍了状态变量的API,那么条件变量究竟怎么用呢?1.条件变量用来等待线程而不是上锁2.条件变量被用来实现线程同步可以看到,条件变量的等待是原子的。原创 2023-05-26 20:47:54 · 27 阅读 · 0 评论 -
LINUX多线程(三)
话接上文,锁的本质其实是一个互斥量,这个互斥量保证了临界区代码运行的原子性。原创 2023-05-25 19:29:29 · 48 阅读 · 0 评论 -
LINUX多线程(二)
demo:(一般来说,锁加的粒度越细越好,做好只加在临界区上,但是为了打印的好看一些我就不管这么多了)原创 2023-05-22 18:53:25 · 49 阅读 · 0 评论 -
LINUX多线程(一)
1.创建新线程的代价远小于创建一个新进程2.线程切换的代价远小于进程切换3.可充分利用多处理器的并行数量4.等待慢速I/O时,程序可执行其他任务5.计算密集型应用,为了可以在多处理器上运行,将计算分解到多个线程中运行6.I/O密集型应用,线程可以等待多个I/O。原创 2023-05-21 17:47:33 · 40 阅读 · 0 评论 -
进程间管道通信(二)
书接上文,倘若我们需要对多个子进程进行通信,该怎么做呢?简而言之,只需要我们保存下每个匿名管道的读端,或是写端即可。此方法我们的父进程保存了每个子进程记录的管道的写端,并把子进程的pid号和匿名管道的写端做成一个键值对,至此,我们的父进程就可以操控多个子进程了。原创 2023-04-25 20:10:53 · 48 阅读 · 0 评论 -
进程间管道通信(一)
首先,介绍一下通信的本质,通信的本质可以大致看成在一个公共区域下,双方都能看见的东西。原创 2023-04-24 18:57:57 · 84 阅读 · 0 评论 -
linux进程前后台切换(小计)
此时 ,ctrl+c无法杀死后台进程。原创 2023-05-02 21:03:06 · 870 阅读 · 0 评论 -
Linux:信号(一)
1.在linux系统中,信号对于每个进程来说都是提前已知的,换句话说,对于进程而言,即便信号没有产生,但我们已经有了处理信号的能力。2.信号的产生对于进程来说是异步的,所以当信号产生的时候,进程可能有以下几种情况:(1)中断进程(执行默认动作)(2)忽略信号(3)自定义操作。原创 2023-05-02 20:50:45 · 42 阅读 · 0 评论 -
vscode下gdb调试方式
并且新建launch .json文件,原有配置之后,添加配置 :gdb 启动。原创 2023-04-24 14:01:10 · 1087 阅读 · 0 评论 -
ipc部分资源的管理方式
从这里可以看出在内核中,消息队列,共享内存和信号量这种ipc资源最开头的元素都是struct ipc_prem,在C语言中,结构体的地址和结构体首元素地址在数值上是相同的。当我们想要获取ipc资源中struct ipc_perm内的资源,我们可以直接取用,当我们需要XXXid_ds内的资源,我们可以强转类型。所以,每当我们申请一个ipc资源的时候,内核中会存在一个struct ipc_perm*类型的数组存储我们申请IPC资源的地址。原创 2023-04-27 16:30:15 · 141 阅读 · 0 评论 -
进程间通信之--------共享内存
在linux中,想要两个进程相互通信,我们有若干种方式,其中较为经典的方法就是共享内存。在此之前,让我们回顾一下通信的本质,通信的本质是在双方都看得见的区域内读写。而共享内存通信的本质是个啥呢?让我们先上图:可以看到,我们在物理内存中开辟了一个内存区,然后通过页表映射,让两个进程都能看见这块内存区域。原创 2023-04-26 21:46:57 · 729 阅读 · 0 评论 -
linux下动静态库生成及使用
每次当我们需要动态库的时候,我们的动态库在磁盘上被加载进物理内存(此时和地址无关),随后根据页表映射,动态库对于可执行文件的进程而言变得”可见“,在需要用到库的时候会跑过去执行库中的代码。执行完之后再返回执行自己的代码。为什么我们的可执行程序会运行不起来呢,因为,我们在gcc编译的时候,我们把文件的路径都告诉了gcc编译器,但是在可执行文件运行的时候,它是一个进程,它哪知道要去哪找链接的库啊。原理是这样的,静态库在生成可执行文件的时候,库里的代码已经编译进了可执行文件内,就相当于是有了个人所有的东西。原创 2023-04-23 21:17:28 · 954 阅读 · 0 评论 -
linux:信号(二)
每个信号都有两个标志位,分别表示其阻塞(block)或未决(pending),还有一个函数指针(handle)表示处理动作。被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递达动作。信号从产生到递达之间的状态称为信号未决(pending)。0:success;sigismember:判断信号是否在信号集中.在接收到信号之后,有些信号会生成core文件.oldset:旧的信号集.(保留原有信号集)sigdelset:将信号从信号集中删除.sigaddset:将信号添加进信号集。原创 2023-05-05 21:15:18 · 65 阅读 · 1 评论 -
LINUX信号(三)
话接上文。原创 2023-05-19 13:29:06 · 62 阅读 · 0 评论