Linux环境高级编程
文章平均质量分 86
本栏目除了介绍Linux文件和目录、标准I/O库、系统数据文件和信息、进程环境、进程控制、进程关系、信号、线程、线程控制、守护进程、各种I/O、进程间通信、网络IPC、伪终端等方面的内容,还在此基础上介绍了多个应用示例,本栏目示例丰富、图文并茂,扩展性强。
沧海一笑-dj
这个作者很懒,什么都没留下…
展开
-
【Ubuntu】Ubuntu22.04没有网络图标解决办法
在使用Ubuntu22.04系统时,在一次重启后桌面右上角并没有有线网络图标,并且打开浏览器无法访问百度。虚拟机网络连接方式是桥接模式,电脑主机也是有网络的。删除NetworkManager缓存文件,重启网络后问题就解决了。原创 2023-11-28 16:55:46 · 1578 阅读 · 2 评论 -
【网络编程】Ubuntu部署BOA服务器
BOA是一款非常小巧的Web服务器,源代码开放、性能优秀、支持CGI通用网关接口技术,特别适合用在嵌入式系统中。BOA服务器主要功能是在互联嵌入式设备之间进行信息交互,达到通用网络对嵌入式设备进行监控,并将反馈信息自动上传给主控设备的目的。它是基于HTTP超文本传输协议的,Web网页是Web服务最基本的传输单元。嵌入式Web服务的工作基于客户机/服务器计算模型,由Web浏览器(客户机)和Web服务器(服务器)构成,也就是著名的B/S结构。原创 2023-09-28 22:16:31 · 744 阅读 · 0 评论 -
【Linux网络】Linux防火墙之iptables
在早期的Linux系统中,默认使用的是iptables防火墙管理服务来配置防火墙。尽管新型的firewalld防火墙管理服务已经被投入使用多年,但是大量的企业在生产环境中依然出于各种原因而继续使用iptables。iptables在当前生产环境中还具有顽强的生命力。各个防火墙管理工具的配置思路是一致的,在掌握了iptables后再学习其他防火墙管理工具时,也有借鉴意义。原创 2023-09-24 10:49:27 · 389 阅读 · 0 评论 -
【网络编程】tftp协议详解
TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务,端口号为69。TFTP通常基于UDP协议而实现,但是也不能确定有些TFTP协议是基于其它传输协议完成的。TFTP协议的设计目的主要是为了进行小文件传输,因此它不具备通常的FTP的许多功能,例如,它只能从文件服务器上获得或写入文件,不能列出目录,不进行认证。原创 2023-09-19 20:55:49 · 2776 阅读 · 0 评论 -
【计算机网络】计算机网络学习笔记
三网融合”:融入现代计算机网络技术Internet(互联网:目前流行最广,事实上的标准译名):全球最大、最重要的计算机网络互联网+:新的经济形态指“互联网+各个传统行业”。把互联网的创新成果深度融合于经济社会各领域。互联网的负面影响计算机网络:由若干节点(node)和连接这些节点的链路(link)组成。节点可以是计算机、集线器、交换机或路由器等。互连网(internetwork 或 internet):多个网络通过一些路由器相互连接起来,构成了一个覆盖范围更大的计算机网络。原创 2023-09-17 16:39:06 · 620 阅读 · 0 评论 -
【Git】Gitee服务器搭建
到目前为止已经有办法使用 Git 来完成日常工作。然而,为了使用 Git 协作功能,你还需要有远程的 Git 仓库。尽管在技术上可以从个人仓库进行推送(push)和拉取(pull)来修改内容,但不鼓励使用这种方法,因为一不留心就很容易弄混其他人的进度。此外,你希望你的合作者们即使在你的电脑未联机时亦能存取仓库 — 拥有一个更可靠的公用仓库十分有用。因此,与他人合作的最佳方法即是建立一个你与合作者们都有权利访问,且可从那里推送和拉取资料的共用仓库。架设一台 Git 服务器并不难。原创 2023-09-13 11:21:50 · 4426 阅读 · 0 评论 -
【Git】本地git服务器搭建
到目前为止已经有办法使用 Git 来完成日常工作。然而,为了使用 Git 协作功能,你还需要有远程的 Git 仓库。尽管在技术上可以从个人仓库进行推送(push)和拉取(pull)来修改内容,但不鼓励使用这种方法,因为一不留心就很容易弄混其他人的进度。此外,你希望你的合作者们即使在你的电脑未联机时亦能存取仓库 — 拥有一个更可靠的公用仓库十分有用。因此,与他人合作的最佳方法即是建立一个你与合作者们都有权利访问,且可从那里推送和拉取资料的共用仓库。架设一台 Git 服务器并不难。原创 2023-09-12 21:37:30 · 4048 阅读 · 1 评论 -
【Git】远程git服务器搭建
到目前为止已经有办法使用 Git 来完成日常工作。然而,为了使用 Git 协作功能,你还需要有远程的 Git 仓库。尽管在技术上可以从个人仓库进行推送(push)和拉取(pull)来修改内容,但不鼓励使用这种方法,因为一不留心就很容易弄混其他人的进度。此外,你希望你的合作者们即使在你的电脑未联机时亦能存取仓库 — 拥有一个更可靠的公用仓库十分有用。因此,与他人合作的最佳方法即是建立一个你与合作者们都有权利访问,且可从那里推送和拉取资料的共用仓库。架设一台 Git 服务器并不难。原创 2023-09-12 21:17:07 · 688 阅读 · 0 评论 -
【Git】git概述
你应该已经对 Git 是什么、Git 与你可能正在使用的集中式版本控制系统有何区别等问题有了基本的了解。现在,在你的系统中应该也有了一份能够工作的 Git 版本。原创 2023-09-11 20:05:19 · 136 阅读 · 0 评论 -
【Ubuntu】Ubuntu磁盘扩容详解
硬盘扩容硬盘容量从100G扩容到200G。原创 2023-09-03 15:53:11 · 8306 阅读 · 1 评论 -
【Linux环境高级编程】Linux环境高级编程作业
2.2 实现ls -l 命令(选做)2.1 实现who命令(选做)原创 2023-08-29 17:32:26 · 541 阅读 · 0 评论 -
【Ubuntu】Ubuntu系统出现Failed to mount VMware vmblock fuse mount
机器使用正确的密码无法登录、错误修改配置文件(如fstab)导致系统无法正常启动,也不能通过输入root密码的方式进入救援模式。启动Ubuntu的时候出现 Failed to mount VMware vmblock fuse mount。修改上面ro部分,修改为 rw single init=/bin/bash, 然后删除此段后面部分,修改后如下。由于挂载配置文件出现问题,导致挂载失败。进入单用户模式修改即可。3.4 按ctrl + x,直接进入单用户模式,如下。3.3 修改上述红色部分内容。原创 2023-08-06 11:24:05 · 2377 阅读 · 10 评论 -
【Linux系统编程】Linux动态库详解
所谓“程序库”,简单说,就是包含了数据和执行码的文件。其不能单独执行,可以作为其它执行程序的一部分来完成某些功能。库的存在可以使得程序模块化,可以加快程序的再编译,可以实现代码重用,可以使得程序便于升级。程序库可分静态库(static library)和共享库(shared library)。不管是Linux还是Windows中的库文件其本质和工作模式都是相同的, 只不过在不同的平台上库对应的文件格式和文件后缀不同。程序中调用的库有两种静态库和动态库。原创 2023-07-25 21:28:08 · 2680 阅读 · 0 评论 -
【Linux系统编程】Linux静态库详解
所谓“程序库”,简单说,就是包含了数据和执行码的文件。其不能单独执行,可以作为其它执行程序的一部分来完成某些功能。库的存在可以使得程序模块化,可以加快程序的再编译,可以实现代码重用,可以使得程序便于升级。程序库可分静态库(static library)和共享库(shared library)。不管是Linux还是Windows中的库文件其本质和工作模式都是相同的, 只不过在不同的平台上库对应的文件格式和文件后缀不同。程序中调用的库有两种静态库和动态库。原创 2023-07-25 20:30:18 · 1502 阅读 · 0 评论 -
【网络编程】BOA服务器移植
BOA是一款非常小巧的Web服务器,源代码开放、性能优秀、支持CGI通用网关接口技术,特别适合用在嵌入式系统中。BOA服务器主要功能是在互联嵌入式设备之间进行信息交互,达到通用网络对嵌入式设备进行监控,并将反馈信息自动上传给主控设备的目的。它是基于HTTP超文本传输协议的,Web网页是Web服务最基本的传输单元。嵌入式Web服务的工作基于客户机/服务器计算模型,由Web浏览器(客户机)和Web服务器(服务器)构成,也就是著名的B/S结构。原创 2023-05-17 10:10:04 · 1226 阅读 · 3 评论 -
【Linux网络编程】并发服务器之select模型
00. 目录文章目录00. 目录01. 概述02. I/O复用技术概述03. select模型服务器实现思路04. select模型服务器实现05. 附录01. 概述服务器设计技术有很多,按使用的协议来分有 TCP 服务器和 UDP 服务器,按处理方式来分有循环服务器和并发服务器。循环服务器与并发服务器模型在网络程序里面,一般来说都是许多客户对应一个服务器(多对一),为了处理客户的请求,对服务端的程序就提出了特殊的要求。目前最常用的服务器模型循环服务器:服务器在同一时刻只能响应一个客户端的请原创 2020-07-29 11:49:20 · 1386 阅读 · 0 评论 -
【Linux网络编程】并发服务器之多线程模型
00. 目录文章目录00. 目录01. 概述02. 多线程服务器03. 多线程服务器实现思路04. 多线程服务器实现05. 附录01. 概述服务器设计技术有很多,按使用的协议来分有 TCP 服务器和 UDP 服务器,按处理方式来分有循环服务器和并发服务器。循环服务器与并发服务器模型在网络程序里面,一般来说都是许多客户对应一个服务器(多对一),为了处理客户的请求,对服务端的程序就提出了特殊的要求。目前最常用的服务器模型循环服务器:服务器在同一时刻只能响应一个客户端的请求。并发服务器:服务器在原创 2020-07-29 11:42:06 · 835 阅读 · 0 评论 -
【Linux网络编程】并发服务器之多进程模型
00. 目录文章目录00. 目录01. 概述02. 多进程并发服务器03. 多进程并发服务器实现思路04. 多进程并发服务器实现05. 附录01. 概述服务器设计技术有很多,按使用的协议来分有 TCP 服务器和 UDP 服务器,按处理方式来分有循环服务器和并发服务器。循环服务器与并发服务器模型在网络程序里面,一般来说都是许多客户对应一个服务器(多对一),为了处理客户的请求,对服务端的程序就提出了特殊的要求。目前最常用的服务器模型循环服务器:服务器在同一时刻只能响应一个客户端的请求。并发服务原创 2020-07-29 11:24:04 · 858 阅读 · 0 评论 -
【Linux网络编程】循环服务器之TCP模型
00. 目录文章目录00. 目录01. 概述02. TCP循环服务器实现方法03. TCP循环服务器模型04. TCP循环服务器实现05. 附录01. 概述服务器设计技术有很多,按使用的协议来分有 TCP 服务器和 UDP 服务器,按处理方式来分有循环服务器和并发服务器。循环服务器与并发服务器模型在网络程序里面,一般来说都是许多客户对应一个服务器(多对一),为了处理客户的请求,对服务端的程序就提出了特殊的要求。目前最常用的服务器模型循环服务器:服务器在同一时刻只能响应一个客户端的请求。原创 2020-07-29 10:57:40 · 924 阅读 · 0 评论 -
【Linux网络编程】循环服务器之UDP循环模型
00. 目录文章目录00. 目录01. 概述02. UDP 循环服务器的实现方法03. UDP循环服务器模型04. UDP循环服务器实现05. 附录01. 概述服务器设计技术有很多,按使用的协议来分有 TCP 服务器和 UDP 服务器,按处理方式来分有循环服务器和并发服务器。循环服务器与并发服务器模型在网络程序里面,一般来说都是许多客户对应一个服务器(多对一),为了处理客户的请求,对服务端的程序就提出了特殊的要求。目前最常用的服务器模型循环服务器:服务器在同一时刻只能响应一个客户端的请求原创 2020-07-29 10:49:32 · 847 阅读 · 0 评论 -
【Linux网络编程】TCP三次握手和四次挥手
00. 目录文章目录00. 目录01. 三次握手02. 四次挥手03. 三次握手和四次挥手原因04. 2MSL05. 附录01. 三次握手在 TCP/IP 协议中,TCP 协议提供可靠的连接服务,采用三次握手建立一个连接。三次握手的过程:第一步: A 的 TCP 向 B 发出连接请求报文段,其首部中的同步位 SYN = 1,并选择序号 seq = x,表明传送数据时的第一个数据字节的序号是 x。第二步 B 的 TCP 收到连接请求报文段后,如同意,则发回确认。B 在确认报文段中应使 SYN原创 2020-07-28 15:20:44 · 965 阅读 · 0 评论 -
【Linux网络编程】TCP网络编程中connect listen和accept三者之间的关系
00. 目录文章目录00. 目录01. TCP服务端和客户端流程02. connect函数03. listen函数04. 三次握手05. accept函数06. 附录01. TCP服务端和客户端流程02. connect函数对于客户端的 connect() 函数,该函数的功能为客户端主动连接服务器,建立连接是通过三次握手,而这个连接的过程是由内核完成,不是这个函数完成的,这个函数的作用仅仅是通知 Linux 内核,让 Linux 内核自动完成 TCP 三次握手连接,最后把连接的结果返回给这个函数的原创 2020-07-28 15:13:11 · 1137 阅读 · 0 评论 -
【Linux网络编程】TCP编程
00. 目录文章目录00. 目录01. TCP概述02. TCP特点03. TCP中CS架构04. TCP相关函数05. TCP服务端示例06. TCP客户端示例07. 附录01. TCP概述传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。TCP旨在适应支持多网络应用的分层协议层次结构。 连接到不同但互连的计算机通信网络的主计算机中的成对进程之间依靠TCP提供可靠的通信服务。TCP原创 2020-07-28 15:06:02 · 1030 阅读 · 0 评论 -
【Linux网络编程】组播
00. 目录文章目录00. 目录01. 组播概述02. 组播应用分类03. 组播地址04. 组播地址与 MAC 地址的关系05. 套接字选项06. 程序示例07. 附录01. 组播概述单播用于两个主机之间的端对端通信,广播用于一个主机对整个局域网上所有主机上的数据通信。单播和广播是两个极端,要么对一个主机进行通信,要么对整个局域网上的主机进行通信。实际情况下,经常需要对一组特定的主机进行通信,而不是整个局域网上的所有主机,这就是多播的用途。IP 多播(也称多址广播或组播)技术,是一种允许一台或多台主原创 2020-07-27 11:41:50 · 998 阅读 · 0 评论 -
【Linux网络编程】广播地址介绍
00. 目录文章目录00. 目录01. 广播地址概述02. 广播地址分类03. 四种IP广播地址04. 广播和地址05. 附录01. 广播地址概述广播地址(Broadcast Address)是专门用于同时向网络中(通常指同一子网)所有工作站进行发送的一个地址。在使用TCP/IP 协议的网络中,主机标识段host ID(简称主机 ID) 为全 1 的 IP 地址为广播地址,广播的分组传送给同一个子网的所有计算机。例如,对于10.1.1.0 (255.255.255.0 )网段,其广播地址为10.1.1转载 2020-07-27 11:05:47 · 2540 阅读 · 1 评论 -
【Linux网络编程】广播
00. 目录文章目录00. 目录01. 广播概述02. 广播地址分类03. 广播的特点04. setsockopt函数05. 程序示例06. 附录01. 广播概述在生活中广播无处不在,像平时在大街上卖物品的商人,在进行推广产品的时候往往都是使用一个喇叭来进行吆喝:“十块钱买不了吃亏,十块钱买不了上当,走过路过千万不要错过”,这就是广播。那么在网络中的广播又是什么样子的呢?网络上的广播指:由一台主机向该主机所在子网内(同一个局域网)的所有主机发送数据的方式。如下图的 1 号主机广播给 2、3、4、原创 2020-07-27 10:51:11 · 1041 阅读 · 0 评论 -
【Libevent】Ubuntu安装libevent报错问题解决
00. 目录文章目录00. 目录01. 问题描述02. 问题分析03. 问题解决04. 附录01. 问题描述编译libevent的时候报一下错误:makemake all-recursivemake[1]: Entering directory `/libevent-2.0.21-stable'Making all in .make[2]: Entering directory `/libevent-2.0.21-stable'/bin/bash ./libtool --tag=CC原创 2020-06-21 20:33:46 · 2532 阅读 · 1 评论 -
【Linux】一步一步学Linux网络编程教程汇总(更新中......)
00. 目录文章目录00. 目录01. 基础理论知识02. 初级编程03. 高级编程01. 基础理论知识【Linux网络编程】网络协议入门【Linux网络编程】IP地址分类和介绍【Linux网络编程】广播地址介绍【Linux网络编程】无连接和面向连接协议【Linux网络编程】网络基础知识【Linux网络编程】大端模式和小端模式02. 初级编程【Linux网络编程】网络字节序和地...原创 2020-07-29 12:00:09 · 2509 阅读 · 3 评论 -
【Linux网络编程】端口绑定问题
00. 目录文章目录00. 目录01. 概述02. 测试示例03. 附录01. 概述所谓绑定(bind)是指别人连接我只能通过我所绑定的端口,相当于,我买了一个手机,别人要想联系我,必须要知道我的手机号码,这时候,我需要怎么办呢?我需要给手机插上电话卡,固定一个电话号码,这样别人就能通过这个电话号码联系我。手机插上电话卡,固定一个电话号码,类似于绑定(bind)的过程,绑定(bind)为了固...原创 2019-11-11 21:52:07 · 2188 阅读 · 0 评论 -
【Linux网络编程】UDP编程
00. 目录文章目录00. 目录01. 概述02. UDP编程C/S结构03. UDP常用函数3.1 sendto函数3.2 recvfrom函数3.3 bind函数04. 程序示例4.1 UDP客户端4.2 UDP服务端05. 附录01. 概述UDP 是 User Datagram Protocol 的简称, 中文名是用户数据报协议,是一个简单的面向数据报的传输层协议,在网络中用于处理数据...原创 2019-11-11 21:42:26 · 2288 阅读 · 1 评论 -
【Linux网络编程】套接字简介
00. 目录文章目录00. 目录01. 概述02. 套接字属性03. socket函数04. 套接字地址结构05. 附录01. 概述Socket套接字由远景研究规划局(Advanced Research Projects Agency, ARPA)资助加里福尼亚大学伯克利分校的一个研究组研发。其目的是将TCP/IP协议相关软件移植到UNIX类系统中。设计者开发了一个接口,以便应用程序能简单地...原创 2019-11-11 21:03:15 · 2127 阅读 · 0 评论 -
【Linux网络编程】网络字节序和地址转换
00. 目录文章目录00. 目录01. 主机序到网络序转换函数02. 网络序到主机序转换函数03. inet_pton函数04. inet_ntop函数05. 附录01. 主机序到网络序转换函数相关函数#include <arpa/inet.h>uint32_t htonl(uint32_t hostlong);uint16_t htons(uint16_t hostsho...原创 2019-11-11 19:28:37 · 1964 阅读 · 0 评论 -
【Linux网络编程】大端模式和小端模式
00. 目录文章目录00. 目录01. 概述02. 示例分析03. 优缺点04. 数组存储05. 测试机器模式07. 附录01. 概述大端模式(Big-endian):高位字节排放在内存的低地址端,低位字节排放在内存的高地址端,即正序排列,高尾端;小端模式(Little-endian):低位字节排放在内存的低地址端,高位字节排放在内存的高地址端,即逆序排列,低尾端;例(无论是小端模式还是...原创 2019-11-11 17:22:45 · 2884 阅读 · 2 评论 -
【Linux网络编程】无连接和面向连接协议
00. 目录文章目录00. 目录01. 概述02. 附录01. 概述网络编程中最基本的概念就是面向连接(connection-oriented)和无连接(connectionless)协议。尽管本质上来说,两者之间的区别并不难理解,但对那些刚刚开始进行网络编程的人来说,却是个很容易混淆的问题。这个问题与上下文有些关联:很显然,如果两台计算机要进行通信,就必须以某种形式“连接”起来,那“无连接...原创 2019-11-10 21:05:09 · 1569 阅读 · 0 评论 -
【Linux网络编程】广播地址介绍
00. 目录文章目录00. 目录01. 概述02. 广播地址类型03. 广播地址分类04. 附录01. 概述广播地址(Broadcast Address)是专门用于同时向网络中(通常指同一子网)所有工作站进行发送的一个地址。在使用TCP/IP 协议的网络中,主机标识段host ID(简称主机 ID) 为全 1 的 IP 地址为广播地址,广播的分组传送给同一个子网的所有计算机。例如,对于10....原创 2019-11-10 20:38:28 · 2644 阅读 · 0 评论 -
【Linux网络编程】IP地址分类和介绍
00. 目录文章目录00. 目录01. IP地址概述02. IP地址格式03. IP地址分类04. 回环IP地址05. 公网IP地址06. 私有IP地址07. 附录01. IP地址概述IP地址(Internet Protocol Address)也称为网间地址、网际地址。IP地址是指互联网协议地址(英语:Internet Protocol Address,又译为网际协议地址),是IP Add...原创 2019-11-10 20:22:07 · 1925 阅读 · 0 评论 -
【Linux网络编程】网络协议入门
00. 目录文章目录00. 目录01. 前言02. 概述03. 物理层04. 数据链路层05. 网络层06. 传输层07. 应用层08. 附录01. 前言我们每天使用互联网,你是否想过,它是如何实现的?全世界几十亿台电脑,连接在一起,两两通信。北京的某一块网卡送出信号,深圳的另一块网卡居然就收到了,两者实际上根本不知道对方的物理位置,你不觉得这是很神奇的事情吗?为了使各种不同的计算机之间...原创 2019-11-10 18:08:43 · 5647 阅读 · 0 评论 -
【Linux网络编程】网络基础知识
00. 目录文章目录00. 目录01. 网络基础知识02. 附录01. 网络基础知识1)什么是链接?链接是指两个设备之间的连接。它包括用于一个设备能够与另一个设备通信的电缆类型和协议。2)OSI 参考模型的层次是什么?有 7 个 OSI 层:物理层,数据链路层,网络层,传输层,会话层,表示层和应用层。3)什么是骨干网?骨干网络是集中的基础设施,旨在将不同的路由和数据分发到各种网络。...原创 2019-11-11 15:38:29 · 9701 阅读 · 15 评论 -
【Linux系统编程】IO多路复用之epoll
00. 目录文章目录00. 目录01. 概述02. epoll函数03. 程序示例04. epoll优缺点05. 附录01. 概述epoll是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率,因为它会复用文件描述符集合来传递结果而不用迫使开发者每次等待事件之前都必须重新准备要被侦听的文件描述符集合,另一点原因...原创 2019-11-09 20:51:56 · 1834 阅读 · 1 评论 -
【Linux系统编程】IO多路复用之poll
00. 目录文章目录00. 目录01. 概述02. poll函数03. 程序示例04. poll优缺点05. 附录01. 概述select() 和 poll() 系统调用的本质一样,前者在 BSD UNIX 中引入的,后者在 System V 中引入的。poll() 的机制与 select() 类似,与 select() 在本质上没有多大差别,管理多个描述符也是进行轮询,根据描述符的状态进行...原创 2019-11-09 20:34:47 · 1634 阅读 · 0 评论