
Linux开发
文章平均质量分 70
Linux开发学习记录
师范大学生
登峰造极境
展开
-
Linux 文件/目录访问(opendir/closedir/readdir)
在Linux系统中我们需要在一个特定目录下对该目录下所有的文件以及目录(文件夹)进行便利访问。Linux获取目录文件的流程如下:1.打开指定目录,使用opendir得到目录句柄。2.while循环中使用readdir获取目录的内容,并存储到struct dirent 结构体变量中。3.dirent结构体变量存储了文件/文件夹的一些属性,可以通过这些属性进行一些差异化操作。4.最后关闭目录句柄closedir。原创 2022-09-21 16:23:02 · 2125 阅读 · 0 评论 -
c++ 程序中使用命令行
头文件函数原型函数功能popen()会调用fork()产生子进程,然后从子进程中调用/bin/sh -c来执行参数command的指令。参数type可使用“r”代表读取,“w”代表写入。如果type是"r"则文件指针连接到command的标准输出,读取命令的标准输出;如果type是"w"则文件指针连接到command的标准输入,写入命令的标准输入。依照此type值,popen()会建立管道连到子进程的标准输出设备或标准输入设备,然后返回一个文件指针。原创 2022-09-20 21:05:23 · 6633 阅读 · 0 评论 -
对类Nginx服务器框架运行流程的理解(三)
前言 前面的两篇文章已经记录了服务器收到完整的数据包之前的所有流程,这篇将记录收发数据包、线程池的使用以及多线程技术。 实际上,数据包的定义和多线程的实现都是可以长篇大论的内容,但是目前我们只去梳理一下服务器框架的核心流程,所以暂时不会详细去讲。研究的出发点 上一篇已经把网络通信的架构实现了,那么接下来研究的问题就是,收到客户端数据之后我们服务器该干什么。 回忆一下上篇的内容,我们的客户端socket连接到服务器,即完成三次握手之后,其对应的epoll类型事件会被我们取出来。我们暂时取出来原创 2021-07-08 22:50:10 · 142 阅读 · 1 评论 -
对类Nginx服务器框架运行流程的理解(二)
前言 虽然服务器架构使用了多种技术,但实际上,只有在收到完整数据后,线程池和多线程技术才参与到服务器架构的工作中来,因此我们可以将工作流程按照事件的发生时刻进行分割,进一步剖析各个技术在服务器架构程序中的实现方式。 本篇详细记录socket与epoll技术(含连接池)在收到一个完整的数据包之前的工作分析。epoll对象的节点 epoll对象的节点是如何加入到红黑树,如何从红黑树中删除;如何加入到双向链表,如何从双向链表中删除的? 我们知道,在网络通信中,操作系统帮助我们完成了一些工作,这样原创 2021-07-08 11:18:18 · 133 阅读 · 0 评论 -
对类Nginx服务器框架运行流程的理解(一)
前言 记录一下最近完成的服务器框架的运行流程。该服务器框架主要包含了多进程设计、IP/TCP通信框架、多线程技术与线程池、epoll高并发技术。主程序的运行流程 首先进入main()函数,开始工作。 第一步:初始化监听端口,获取监听套接字,并将监听端口的通信流程进行到listen() 为什么要急着将监听端口初始化,原因很简单。监听端口本身都是唯一的,所以只需要初始化一次,而之后的程序都是多进程进行的,如果放在fork()后面,会导致端口被bind()多次,由TCP通信的理论可知,这是不可能原创 2021-07-07 22:21:07 · 155 阅读 · 0 评论 -
Linux守护进程的创建方式
前言 守护进程可以运行在后台,不受某个特定终端的限制,安全稳定地持续运行,一般会作为程序中的“监管进程存在”。 守护进程有以下特点: 1.不属于任何终端的会话分组,自己拥有会话分组。 2.没有显示终端,一般不与用户交互。 3.一般持续运行在后台。源代码//描述:守护进程初始化//执行失败:返回-1, 子进程:返回0,父进程:返回1int ngx_daemon(){ //(1)创建守护进程的第一步,fork()一个子进程出来 switch (fork())原创 2021-06-22 10:58:34 · 295 阅读 · 0 评论 -
conda:未找到命令
ubuntu版本的anaconda3安装很容易,本身是个脚本文件,使用bash指令执行即可。但是执行之后需要导入路径才能使用,不然会出现conda:未找到命令这种错误。解决方案: 打开一个终端,然后输入命令行打开bashrc文件:sudo gedit ~/.bashrc 注意这里要有sudo,不然无法编辑里面的内容。 打开自己的安装目录/home/用户名/anaconda3/bin,输入指令pwd查看路径。由于在网上发现一些博文的路径名称不同,因此路径尽量自己查看确认:pwd原创 2020-08-12 10:21:48 · 44156 阅读 · 26 评论 -
ubuntu下python版opencv的使用
准备工作 1.Ubuntu系统下的python3和opencv安装。 2.ubuntu版的vscode,使用vscode编程十分方便。配置vscode 要想用vscode编写python代码需要安装相关的插件。 在vscode插件栏中搜索python,然后安装即可。 程序的文件准备与编写 为了简单测试下OpenCV,使用一个程序来读取和显示图片。当然就需要先准备一张图片: 图片在读取的时候需要知道它的绝对路径。在有图片的目录下打开一个终端,输入指令pwd来查看原创 2020-07-13 16:47:37 · 3368 阅读 · 0 评论 -
树莓派安装python版opencv4
前言 想给树莓派安装python版opencv,需要提前做好两个准备: 1.给树莓派的软件源更换:树莓派4更换软件源。 2.安装python3环境与pip换源:树莓派(Linux)安装python环境与pip换源。 以上的两步极为重要,主要原因是opencv需要安装大量的依赖,如果不换源那么安装依赖都不一定能安装好(极有可能下载失败)。安装依赖: 这些依赖都是需要安装的,尤其是numpy,必须要在opencv安装之前安装。 输入以下命令行即可完成安装:sudo apt-get i原创 2020-07-10 23:02:37 · 783 阅读 · 1 评论 -
树莓派4更换软件源
树莓派4下载软件需要从国外的服务器下,实属难顶。为了方便下载这里换一下软件源。 1.输入以下指令: sudo nano /etc/apt/sources.list 2.打开文件后,用“#”将原先的源注释掉,然后添加以下两句:deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main contrib ...原创 2020-01-09 15:48:38 · 2973 阅读 · 0 评论 -
树莓派(Linux)安装python环境与pip换源
前言 记录下一个linux系统如何安装python3环境与pip换源。这里以一个树莓派作为例子记录,其实凡是基于debian系的linux系统都可以适用。安装python3 输入安装python3的指令:sudo apt-get -y install python3 实际上,目前的linux系统一般都默认自带一个python2和python3。python2的使用已经比较稀罕了,所以需要以下指令将默认的python版本设定为Python3:cd /usr/binsudo rm pyth原创 2020-07-07 00:05:14 · 4464 阅读 · 0 评论 -
ubuntu主机下搭建nfs与问题
前言 ubuntu下搭建nfs会遇到一些细节性的小问题,在这里记录一下。 环境:Ubuntu16.04。快速搭建的步骤 这里不赘述搭建的原理选项之类,晚上很多,这里只记录下如何最快速的搭建nfs。 1.首先新建一个用来共享文件的文件夹,一般是放在用户目录里面的。 如下图所示,在家目录下新建一个文件夹叫linuxshare。这里出现了一个需要注意的点就是只看当前界面的话可能会认为这个新文件夹的目录是/home/linuxshare。但是实际上并非如此,在home目录后面其实是当前用户的用原创 2020-07-03 10:53:47 · 3323 阅读 · 0 评论 -
ubuntu中执行脚本出现no such file or directory
问题: 在ubuntu下执行.sh文件大多数情况下只需要注意给脚本文件添加可执行权限就可以了。但是有些情况下会出现这种问题: 从上图可以看到,文件夹中的几个脚本文件的权限都达到了“777”,按理说任何用户都可以执行这些脚本。 但是执行其中任意的就出事了: 该文件中的所有脚本都是如此,显示的错误都是no such file or directory。解决问题 经过一段时间的资料查询,发现该问题并非是路径问题所致(搁用户目录下路径还能翻车?)。实际的原因大致是该文原创 2020-07-01 11:02:22 · 22323 阅读 · 7 评论 -
ubuntu更换软件源
前言: 上一篇文章记录了树莓派4更换软件源的操作方式。那么这里有个问题,树莓派4和树莓派3更换软件源方式一样么?和Ubuntu等操作系统比呢?Ubuntu不同版本更换软件源方式有没有区别? 这里先把答案甩出来。假设操作系统的版本不同,那么更换软件源一定有区别。 Ubuntu16.04和Ubuntu18.04一定不一样,树莓派4的raspbian buster和树莓派3的raspbian...原创 2020-01-10 16:21:57 · 521 阅读 · 0 评论 -
ubuntu16.04下安装opencv3.4.0
1.需要下载的文件: 就一个,source版的opencv。最好在官网下载,虽然速度慢但是文件不会出问题。我下载的是3.4.0版本,链接在这里:https://opencv.org/releases/page/3/。 注意一定是source版的,因为接下来需要源码编译安装。下载完是个zip压缩包,先搁着。2.需要安装的依赖与编译工具: 打开命令行,输入下句语句安装所有依赖:sud...原创 2019-12-11 00:04:29 · 361 阅读 · 0 评论