![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux
文章平均质量分 77
swbb
这个作者很懒,什么都没留下…
展开
-
简单问题汇总
vector是可变大小数组的序列容器,拥有一段连续的内存空间,并且起始地址不变,因此能高效的进行随机存取,时间复杂度为o(1);但因为内存空间是连续的,所以在进行插入和删除操作时,会造成内存块的拷贝,时间复杂度为o(n)。当数组中内存空间不够时,会重新申请一块内存空间并进行内存拷贝。vector使用动态分配数组来存储它的元素,当新元素插入时候,这个数组需要被重新分配大小,为了增加存储空间,其做法是,分配一个新的数组,然后将全部元素移到这个数组。原创 2024-05-10 17:37:14 · 552 阅读 · 0 评论 -
深入解析重定向操作—dup2函数
在开始深入解析dup2函数之前,我们先来了解一下它的基本概念。dup2函数是Unix/Linux系统提供的一个系统调用函数,其作用是复制文件描述符,并将其指定为新的文件描述符。简单来说,dup2函数可以将一个已存在的文件描述符复制到另一个文件描述符上,并且可以自定义新文件描述符的编号。dup2函数作为Unix/Linux系统中重要的系统调用之一,在计算机系统编程中具有广泛的应用。通过本篇博客,我们详细介绍了dup2函数的原理、用法和常见的使用场景,并提醒读者注意一些使用上的注意事项。原创 2024-03-26 21:28:25 · 396 阅读 · 0 评论 -
Linux中execl函数详解
exec其实并不是一个函数,而是由六个以exec开头的函数所构成的一个函数族,如下图所示其中是最常用的函数,我们就来说一下execl函数我们来说明一下execl函数所需要的四个参数①标识符可以理解为编程时使用的“名字”,像命令 ls -a 中的ls就是标识符,是这个命令的“名字”,文件的文件名就是标识符,是这个文件的“名字”。②参数很好理解,像命令 ls -a 中的 -a 就是参数,函数move(int a, int b)中的整型变量a和整形变量b就是参数。原创 2024-03-25 21:51:33 · 984 阅读 · 0 评论 -
一个简易的基于线程池的TCP的任务处理
【代码】一个简易的基于线程池的TCP服务器客户端的任务处理。原创 2024-03-22 17:39:09 · 713 阅读 · 0 评论 -
【项目设计】基于MVC的负载均衡式的在线OJ
客户端向服务器的oj_server发起请求,有可能是请求题目的列表、请求特定题目的编写、请求代码提交;对于请求题目列表和编写,只需要向文件或MySQL获取数据,并显示成网页即可,但是提交代码的时候,我们就要考虑多用户提交的情况,所以oj_server在收到不同客户端发来的提交代码的请求时,就需要负载均衡式的选择后端的complie_server进行编译并运行,然后反馈最终结果。原创 2024-03-21 18:46:09 · 964 阅读 · 0 评论 -
【项目设计】基于Httplib和Mysql的视频播放
搭建视频共享播放服务器,可以让所有人通过浏览器访问服务器,实现视频的上传查看,以及管理并播放的功能。主要是完成服务器端的程序业务功能的实现以及前端访问界面的编写,能够支持客户端浏览器针对服务器上的所有视频进行操作。项目名称:视频共享播放系统项目功能:搭建一个共享播放系统,服务器支持用户通过前端浏览器访问服务器,获取展示与观看和操作的界面,最终实现视频的上传以及观看和删改查等基础管理功能。开发环境及工具:Ubuntu 16.04.10 、vim、g++、gdb、makefile、vscode等。原创 2024-03-15 17:40:20 · 1038 阅读 · 0 评论 -
【项目设计】基于Epoll(IO多路转接)和httplib的boost库搜索引擎
关于项目总结,主要是针对项目的扩展1. 建立整站搜索我们搜索的内容是在boost库下的doc目录下的html文档,你可以将这个库建立搜索,也可以将所有的版本,但是成本是很高的,对单个版本的整站搜索还是可以完成的,取决于你服务器的配置。2. 设计一个在线更新的方案,信号,爬虫,完成整个服务器的设计我们在获取数据源的时候,是我们手动下载的,你可以学习一下爬虫,写个简单的爬虫程序。采用信号的方式去定期的爬取。3. 不使用组件,而是自己设计一下对应的各种方案。原创 2023-12-31 20:33:27 · 1011 阅读 · 1 评论 -
linux的getcwd()和chdir()函数
登录时,工作目录设置为起始目录(home directory),该起始目录从口令文件(通常是/etc/passwd)中的相应用户的登录项中取得。口令文件中的登录项由7个以冒号分隔的字段组成,依次是:登录名、加密口令、数字用户ID、数字组ID、注释字段、起始目录以及shell程序。功能:getcwd()会将当前工作目录的绝对路径复制到参数buffer所指的内存空间中,参数size为buf的空间大小。函数原型:char *getcwd(char *buf, size_t size);功能:改变当前工作目录。原创 2023-12-14 16:55:50 · 289 阅读 · 1 评论 -
c执行linux命令的函数:popen
函数说明:popen()会调用fork()产生子进程,然后从子进程中调用/bin/sh -c 来执行参数command 的指令。此外,所有使用文件指针(FILE*)操作的函数也都可以使用,除了fclose()以外,用pclose()来关闭。原创 2023-12-14 16:52:31 · 78 阅读 · 1 评论 -
fflush与fsync的关系(语言级缓冲区与内核级缓冲区)
对于输出设备或磁盘文件,fflush只能保证数据到达内核缓冲区,并不能保证数据到达物理设备, 因此应该在调用fflush后,调用fsync(fileno(stream)),确保数据存入磁盘。fflush是libc.a中提供的方法,是用来将流中未写的数据传送到内核。linux底层操作,属于内核调用, 涉及到进程上下文的切换,即用户态到核心态的转换,这是个比较消耗性能的操作。c库缓冲-----fflush--------->内核缓冲--------fsync(刷盘)----->磁盘。原创 2023-12-14 16:46:13 · 85 阅读 · 1 评论 -
匿名管道和命名管道的概述理解和c++实现——进程间通信
匿名管道和命名管道的概述理解和c++实现——进程间通信。原创 2023-11-15 12:09:04 · 80 阅读 · 1 评论 -
进程替换,exec系列函数使用
进程替换,exec系列函数使用进程替换就是指进程不变(进程的pcb,进程地址空间不变),仅仅替换当前进程的代码和数据的技术(新程序的替换旧进程的),叫做进程的程序替换,这样就好像子进程执行了一个全新的程序。原创 2023-11-01 12:09:31 · 51 阅读 · 1 评论 -
进程终止、进程等待以及fork()、wait()、waitpid()
进程终止、进程等待、wait、waitpid、fork原创 2023-10-17 10:25:17 · 213 阅读 · 0 评论 -
Linux操作系统——深度剖析进程地址空间
C/C++的程序地址空间不是内存,使用的地址绝对不是物理地址而是虚拟地址,每个进程再启动时,都会让操作系统给它创建一个地址空间——进程地址空间,让每个进程都认为自己是独占系统中的所有资源的。原创 2023-10-16 17:52:08 · 75 阅读 · 0 评论