C++ linux
文章平均质量分 77
希望我努力一点
这个作者很懒,什么都没留下…
展开
-
vscode使用linux jsoncpp配置
vscode写c++,如何配置jsoncpp?原创 2022-08-06 16:26:01 · 534 阅读 · 0 评论 -
linux网络编程--Web Server and HTTP
基本概念browser与server通信,在浏览器输入域名或IP地址:port号,浏览器进行域名解析为相应的ip地址或根据ip地址向对应server发送http请求。 其中首先要TCP协议进行三次握手,建立连接,然后http协议生成对应的http请求报文,通过TCP,IP协议发送到目标server。HTTP: 超文本传输协议,请求和响应消息头以ASCII形式发出,消息内容类似MIME;默认端口80,本地发出请求的客户端叫做用户代理程序,和服务器之间会存在多个“中间层”,比如代理服务器、网关或.原创 2022-04-29 21:23:51 · 385 阅读 · 0 评论 -
阻塞非阻塞,同步异步,IO模型
IO包括数据就绪,数据读写处理IO时,阻塞非阻塞都是同步IO,除非使用特殊API.同步:数据读写由应用程序自己完成,异步则由操作系统处理,处理完毕后通知应用程序。原创 2022-04-29 20:06:23 · 97 阅读 · 0 评论 -
linux网络编程---IO多路复用
IO模型:阻塞等待模型(BIO):1)优点:不占用CPU时间片,阻塞时,cpu时间片交给别人,缺点:但同时只能处理同一个操作。2)可以使用多线程/多进程实现并发处理多个客户端请求,每个线程对应一个客户端,线程里进行读写操作,主线程则可以继续运行监听客户端。 (但每个线程里 其实也会存在阻塞问题)while(1){accept(lfd,...); (blocking)create thread->read/write; (blocking...原创 2022-04-24 18:11:02 · 430 阅读 · 0 评论 -
守护进程及相关概念
进程进程组和会话形成两级层次关系:进程组是一组相关进程的集合,会话是一组相关进程组的集合。一个进程组拥有一个进程组首进程,该进程id为该进程组id,新进程会继承其父进程所属进程组id。进程组的生命周期是首进程创建组的时刻-最后一个进程退出时刻。进程可能会因为终止/加入另一个进程组而退出该组。会话会话首进程是创建该会话的进程,其进程id为会话id,新进程继承其父进程会话id.一个会话的所有进程共享一个控制终端,一个终端只能是一个会话的控制终端,控制终端在会话首进程首次打开终端设备时建立原创 2022-03-30 16:54:24 · 268 阅读 · 0 评论 -
进程间通信:共享内存
共享内存:允许两个或多个进程共享物理内存的同一块区域(段),无需内核接介入,只要让一个进程将数据复制进共享内存里,并且这部分数据会对其他共享该段的进程可以访问。管道等需要将数据从用户缓冲区复制进内核区,接收时从内核复制进用户缓存区,所以共享内存相比管道这种IPC速度更快。使用步骤:1)调用shmget() (share memory get)创建共享内存段或取得一个已有共享内存段的标识符。新创建的内存段里的数据都会被初始化为0。 i...原创 2022-03-30 14:16:42 · 377 阅读 · 0 评论 -
进程间通信:信号
目录基本概念信号列表信号默认动作信号捕捉 内核实现信号捕捉的过程信号集和相关函数SIGCHLD信号基本概念#include <signal.h>信号是事件发生时对进程的通知机制,有时也叫软件中断,信号可以让一个正运行进程被另一个运行进程异步进程中断,转而处理某突发事件。使内核为进程产生信号的事件有:1 终端发特殊字符,如CTRL+C 对前台进程发送中断信号2 硬件发生异常,如被0除等...原创 2022-03-30 12:57:11 · 1494 阅读 · 0 评论 -
进程间通信:内存映射
目录基本概念相关系统调用使用内存映射进程通信:(是非阻塞通信。)父子进程通过内存映射通信;内存映射注意事项匿名映射基本概念将磁盘文件映射到内存,用户修改内存就可以直接修改磁盘文件。(修改内存快很多,改磁盘很慢)。相关系统调用void *mmap(void *addr, size_t length, int prot, int flags,int fd, off_t offset); 映射长length(非0)的磁盘文件到addr(nu...原创 2022-03-29 11:52:34 · 851 阅读 · 0 评论 -
进程间通信及管道
不同进程之间资源是独立的,不能在一个进程里直接访问另一个进程的资源。他们的信息交互和状态传递需要进程间通信(IPC)。通信目的:数据传输 通知事件:如子进程终止时要通知父进程 资源共享:需要内核提供互斥和同步机制 进程控制:如Debug进程需要控制拦截另一个进程,并能够及时知道它的状态改变...原创 2022-03-29 11:52:48 · 131 阅读 · 0 评论 -
LINUX多进程
一 进程基本概念程序包含:二进制格式标识(包含描述可执行文件格式的元信息(大小等))机器语言指令:对程序算法进行编码程序入口地址数据(程序的变量初始值,字面量值等)符号表和重定位表:描述函数,变量的位置及名称,包含调试运行时的符号解析。共享库和动态链接信息:他们的路径名用来指导如何创建进程。 只占据磁盘,不占据cpu,内存等资源。进程: 占据磁盘,占据cpu,内存等资源...原创 2022-03-29 11:53:02 · 1137 阅读 · 0 评论 -
LINUX基础知识
调用fopen函数打开文件,会返回一个FILE指针,该指针里有个fd用来定位要操作的文件,这个fd在进程的内核区保存,由PCB(进程控制块)管理,PCB里有一个数组存储文件描述符,大小默认1024。 前三个文件描述符默认的是绑定当前终端(将当前终端虚拟为一个文件)。ps:一个文件被打开fopen多次,他的文件描述符是不同的。直到close()才被释放。标准C库IO函数带有缓冲区,先写进缓冲区,再写进磁盘。Linux的IO函数没有,直接写进磁盘,所以更适合网络通信。受保护...原创 2022-03-29 11:53:19 · 134 阅读 · 0 评论 -
GDB调试过程及调试命令
生成包含调试信息的可执行文件时加上-gg++ main.cpp -o app1g++ main.cpp -o app2 -gll -h app1 app2-rwxrwxr-x 1 nowcoder nowcoder 8.8K 3月 23 19:42 app1*-rwxrwxr-x 1 nowcoder nowcoder 41K 3月 23 19:42 app2* 可以看到 加了调试信息的app2 占用空间更多输入 gdb app2之后1)set a...原创 2022-03-23 20:54:22 · 500 阅读 · 0 评论 -
Linux c++ 的Makefile文件编写规则
Makefile 指明哪些文件需要先编译,哪些需要后编译,哪些重新编译等等。可以实现“自动化编译”,写好后用make命令(vs: nmake, linux: gnu:make)便可以根据Makefile里的规则实现工程自动编译,能够提高软件开发效率。makefile规则:目标...:依赖...命令 (通过执行命令队医来操作生成目标文件).... 规则可以有很多条,但其他规则一般都为第一条服务app:te...原创 2022-03-23 19:20:35 · 311 阅读 · 0 评论 -
c++ 静态库,动态库的制作和使用
静态库:链接时,静态库代码被打包到可执行程序里动态库:链接时,动态库代码不会被打包到可执行程序里,只会打包名字等库信息。启动时,动态库会被动态加载到内存中,通过ldd(list dynamic dependencied) 命令可以检查动态库依赖关系。优缺点对比:静态库:动态库:制作静态库gcc -c test.cpp 生成.o目标文件 ar rcs libxxx.a xxx.o ...原创 2022-03-23 16:44:09 · 1582 阅读 · 0 评论 -
Linux 常用命令
gcc -v/--version 查看版本ifconfig 查看ipls 查看当前目录下文件夹及目录mkdir 生成目录tree 以树形查看目录touch test.cpp 创建rm test.cpp 删除vim test.cpp 在vim打开cat test.cpp 在命令行查看g++ test.cpp -o app(要生成文件名) 或 g++ -o app test.cpp编译 g++ test.c 默认生成a.outg++ ...原创 2022-03-23 13:24:13 · 1360 阅读 · 0 评论 -
牛客项目-linux开发环境搭建
安装vmware新建虚拟机,安装vmware-tools。 (此时不能拖拽文件,复制粘贴)sudo apt-get autoremove open-vm-toolssudo apt-get install open-vm-toolssudo apt-get install open-vm-tools-desktop执行以上命令后,即可拖拽,复制粘贴。配置下xshell 6:sudo apt install openssh-server 安装sshsudo apt instal原创 2022-03-18 13:37:44 · 1447 阅读 · 0 评论