linux编程
文章平均质量分 53
肥叔菌
本博客主要用于记录学习过程中的笔记,每隔一段时间,博主将会将精华内容整合发到知乎、简书上。欢迎关注博主肥叔菌在其他平台上的账号,谢谢。
B站:https://space.bilibili.com/456254145
segmentfault:https://segmentfault.com/u/feishujun/articles
简书:https://www.jianshu.com/u/67bab078551a
展开
-
CentOS7解决: g++: 错误:unrecognized command line option ‘-std=c++14
最近在编译RocksDB代码时g++报出如下错误:首先,这个错误很明显了,g++版本不够,在stackoverfow上,得知-std=c++14需要g++5.2以上,而centos默认的g++只有4.8.5。所以,所有要做的事情,是升级g++。由于一开始对这方面不了解,走了许多弯路,现在把具体成功步骤归纳如下:证明你成功了。现在可以开心的使用-std=c++14了~注意事项:不需要提前卸载原有的gcc、g++;若按照上述步骤不成功,可以在步骤3之前尝试yum install devtoolset-7-原创 2022-06-12 16:20:02 · 7594 阅读 · 1 评论 -
Linux下使用Sigar 获取磁盘信息
linux 下我们经常要对磁盘进行监控,那就需要获取磁盘的容量等信息,使用sigar 库可以很轻松的完成这些功能.不同的linux 系统上文件系统目录各有差异,首先我们要知道当前系统下的目录有哪些.和文件系统相关的结构体是sigar_file_system_t,我们看一下该结构体中包含了哪些信息:typedef struct { char dir_name[SIGAR_FS_NAME_LEN]; char dev_name[SIGAR_FS_NAME_LEN]; char ty原创 2021-12-09 22:40:13 · 677 阅读 · 0 评论 -
Linux编程入门一System V共享内存
共享内存允许两个或多个进程共享物理内存的同一块区域(通常被称为段)。原创 2021-07-12 23:48:45 · 185 阅读 · 0 评论 -
Linux编程入门一System V IPC介绍
System V IPC包括三种不同的进程间通信机制。原创 2021-07-12 22:21:41 · 164 阅读 · 0 评论 -
Linux编程入门一POSIX共享内存
System V共享内存和共享文件映射允许无关进程共享内存区域以便执行IPC的技术,和两种技术都存在一些不足。System V共享内存模型使用的是键和标识符,这与标准的UNIX I/O模型使用文件名和描述符的做法不一致的。这种差异意味着使用System V共享内存段需要一整套全新的系统调用和命令。使用一个共享文件映射来进行IPC要求创建一个磁盘文件,即使无需对共享区域进行持久存储也需要这样做。除了因需要创建文件所带来的不便之外,这种技术还会带来一些文件I/O开销。由于存在这些不足,所有POSIX.1原创 2021-07-12 12:58:24 · 243 阅读 · 0 评论 -
Linux编程笔记目录
Linux编程笔记目录Shell环境变量Shell环境变量linux中特别的Shell变量 DUALCASE原创 2021-03-14 16:01:07 · 1811 阅读 · 0 评论 -
Redhat 7 yum安装软件时提示registered to Red Hat Subscription Management的解决方案
在使用redhat7的yum命令安装软件时,发现总是提示This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register. 或如下错误信息:This system is not registered with RHN. RHN support will be disabled.原来RHEL7的yum服务是付费的,因为没有付费,所以无法使用yum安装软件,原创 2020-05-31 23:52:53 · 10607 阅读 · 3 评论 -
ubuntu 16.04-设置合上笔记本盖子不休眠
编辑下列文件:sudo vim /etc/systemd/logind.conf#HandlePowerKey按下电源键后的行为,默认power off#HandleSleepKey 按下挂起键后的行为,默认suspend#HandleHibernateKey按下休眠键后的行为,默认hibernate#HandleLidSwitch合上笔记本盖后的行为,默认suspend(改为ignore...原创 2020-04-21 17:37:12 · 10644 阅读 · 0 评论 -
ubuntu 16.04 安装SSH服务
上一个博客我将烂电脑从Windows 7系统转为了Ubuntu 16.04,这篇博客主要展示在该系统上启动SSH服务。Ubuntu16.04 桌面版默认只会安装ssh客户端,不会安装ssh服务器。也就是你可以使用ssh命令连接远程主机,但是你不能够连接本机。<------------------------------------------------------------------...原创 2020-04-21 17:00:05 · 11010 阅读 · 0 评论 -
vim如何修改只读文件
当我们使用vim编辑类似于/etc/network/interfaces这样的文件的时候总是会遇到权限问题不能保存,原因是所有的配置文件的权限只属于root。 那么怎样直接以root权限直接vim这些文件?方法是:结合sudo和tee两个命令来实现:w !sudo tee %解释如下::w – Write a file.!sudo – Call shell sudo ...转载 2020-04-15 14:31:32 · 10487 阅读 · 0 评论 -
从Windows 7转为使用Ubuntu 16.04
闲置的笔记本电脑装Win 7用起来比较慢,换个Ubuntu系统使用看看效果。使用CPU-Z软件查看电脑的硬件配置:下载下载16.04的子版本,更加稳定官方下载地址(不推荐)https://www.ubuntu.com/download中科大源 http://mirrors.ustc.edu.cn/ubuntu-releases/16.04/阿里云开源镜像站 http:/...原创 2020-03-23 18:04:39 · 8793 阅读 · 0 评论 -
STL源码剖析-读书笔记
STL实现的是依据泛型思维架设起来的一个概念结构。这个以抽象概念为主体而非以实际类为主体的结构,形成严谨的接口标准。在此接口下,任何组件都有最大的独立体,并以所谓迭代器(iterator)胶合起来,或以所谓适配器(adapter)互相配接,或以所谓仿函数(functor)动态选择某种策略(policy或strategy)。STL六大组件:容器 containers:各种数据结构,如vecto...原创 2019-10-29 15:53:56 · 8614 阅读 · 0 评论 -
Linux编程入门五信号
服务器程序通常需要处理三类事件:I/O事件、信号及定时事件。信号是由用户、系统或进程发送给目标进程的信息,以通知目标进程某个状态的改变或系统异常。服务器程序必须处理(至少忽略)一些常见的信号,以免异常终止。Linux信号可由如下条件产生:对于前台进程,用户可以通过输入特殊的终端字符来给它发送信号。比如输入Ctrl+C通常会给进程发送一个中断信号。系统异常。比如浮点异常和非法内存段访问。系统...原创 2019-06-10 16:28:28 · 8895 阅读 · 0 评论 -
Linux编程入门四进程
进程的创建有两种方式:一种是由操纵系统创建,一种是由父进程创建。在系统启动时,操作系统会创建一些进程,它们承担着管理和分配系统资源的任务,这些进程通常被称为系统进程。系统允许一个进程创建新进程(即为子进程),子进程还可以创建新的子进程,形成进程树结构。整个Linux系统的所有进程也是一个树形结构。树根是系统自动构造的,即在内核态下执行的0号进程,它是所有进程的祖先。由0号进程创建1号进程(内核态)...原创 2019-06-10 16:26:39 · 9235 阅读 · 0 评论 -
Linux编程入门三多线程
早期Linux不支持线程,直到1996年,Xavier Leroy等人才开发出第一个基本符合POSIX标准的线程库LinuxThreads,但其效率低而且问题多。自内核2.6开始,Linux才真正提供内核级的线程支持,并有两个组织致力于编写新的线程库:NGPT(Next Generation POSIX Threads,2003年放弃)和NPTL(Native POSIX Thread Libra...原创 2019-06-10 16:26:06 · 8909 阅读 · 0 评论 -
Libevent 2.0.20源码分析-event_base结构体分析
结构体event_base是Libevent的Reactor。它定义在event-internal.h文件中。事件循环是Libevent的动力,实现事件循环的函数是event_base_loop。该函数首先调用I/O事件多路分发器的事件监听函数,以等待事件;当有事件发生时,就依次处理之。int event_base_loop(struct event_base *base, int flag...原创 2019-06-10 16:16:10 · 8935 阅读 · 0 评论 -
Libevent 2.0.20源码分析-event、eventop结构体分析
Libevent实例:这段代码描述了Libevent库的主要逻辑:调用event_init函数创建event_base对象。一个event_base相当于一个Reator实例。创建具体的事件处理器,并设置它们所从属的Reactor实例。evsignal_new和evtimer_new分别用于创建信号事件和定时事件处理。#define evtimer_new(b, cb, arg)...原创 2019-06-10 15:28:30 · 9281 阅读 · 0 评论 -
Linux编程入门一文件操作
linux 编程入门Linux/UNIX系统编程手册 【德】Michael Kerrisk著 着眼于Linux 2.6.x和GNU C语言库(glibc)版本2Web站点 http://man7.org/tlpi 勘误 http://man7.org/tlpi/errata为调试程序,或是研究程序的运作机制,可使用附录A所介绍的strace命令,对程序发起的系统调用进行跟踪...原创 2018-06-03 20:45:04 · 20236 阅读 · 1 评论 -
Linux编程入门二调试
该篇主要简要介绍linux下常用的一些调试的工具。参考自徐晓鑫 后台开发核心技术与应用实践strace所有操作系统在其内核都有一些内建的函数,这些函数可以用来完成一些系统级别的功能,一般称Linux系统上的这些函数为“系统调用”(system call)。这些函数代表了用户空间到内核空间的一种转换。应用程序不能直接访问Linux内核,也不能直接调用内核函数。应用程序可以跳转到system_ca...原创 2019-04-17 11:08:30 · 8639 阅读 · 0 评论 -
Protobuf入门一:在linux下编译使用protobuf
Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,目前已经正在使用的有超过 48,162 种报文格式定义和超过 12,183 个 .proto 文件。他们用于 RPC 系统和持续数据存储系统。Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC...原创 2019-04-22 20:23:26 · 23371 阅读 · 3 评论 -
JsonCpp入门一:在linux下编译使用JsonCpp
序列化是将对象状态转换为可保持或传输的格式的过程,反序列换则是将流转换为对象。使用环境Redhat 6.5,系统中已经装了python的环境。这里编译JsonCpp需要用到工具scons,先用已root的用户权限执行yum install scons命令来安装scons,等到提示“Complete!”就是安装成功了。解压JsonCpp的压缩包,进入解压目录后,执行“scons platfor...原创 2019-04-18 20:05:18 · 13215 阅读 · 0 评论 -
CGI入门一:使用C++实现CGI程序
为什么需要CGI最早的Web服务器简单地响应浏览器发来的HTTP请求,并将存储在服务器上的HTML文件返回给浏览器,也就是静态html。事物总是不 断发展,网站也越来越复杂,所以出现动态技术。但是服务器并不能直接运行 php,asp这样的文件,自己不能做,外包给别人吧,但是要与第三做个约定,我给你什么,然后你给我什么,就是我把请求参数发送给你,然后我接收你的处理结果给客户端。那这个约定就是 co...原创 2019-04-18 21:31:10 · 20545 阅读 · 2 评论 -
30款Linux 高性能网络开发库开源软件
转载至:https://blog.csdn.net/lifan_3a/article/details/38410081Lua的epoll模块lua-epollLua的epoll模块 更多细节,请查看sample.lua API: ok,err=epoll.setnonblocking(fd) 设置一个文件描述符非阻塞。 epfd,err=epoll.create() 创建一个 epoll...转载 2019-04-23 19:29:57 · 10936 阅读 · 0 评论 -
Linux编程入门三网络编程一
所有知名服务使用的端口号都定义在/etc/services文件中。同步IO指的是,必须等待IO操作完成后,控制权才返回给用户进程。异步IO指的是,无须等待IO操作完成,就将控制权返回给用户进程。4种IO模型:1. 阻塞IO模型 2. 非阻塞IO模型 3. 多路IO复用模型 4. 异步IO模型int accept(int sockfd, struct sockaddr *addr, sockl...原创 2019-04-24 17:17:22 · 8808 阅读 · 0 评论 -
Linux编程入门三网络编程二
同步/异步IOI/O模型读写操作和阻塞阶段同步阻塞I/O程序阻塞于读写函数同步I/O复用程序阻塞于I/O复用系统调用,但可同时监听多个I/O事件。对I/O本身的读写操作是非阻塞的同步信号驱动I/O(SIGIO信号)信号触发读写就绪事件,用户程序执行读写操作。程序没有阻塞阶段异步异步I/O内核执行读写操作并触发读写完成事件。程序没有阻塞阶段...原创 2019-04-29 17:25:04 · 8820 阅读 · 0 评论 -
Linux编程入门三网络编程三 epoll的LT和ET模式以及EPOLLONESHOT事件
epoll对文件描述符的操作有两种模式:LT(Level Trigger 电平触发)模式和ET(Edge Trigger 边沿触发)模式。LT是默认的工作模式,这种模式下epoll相当于一个效率较高的poll。对于采用LT工作模式的文件描述符,当epoll_wait检测到其上有事件发生并将此事件通知应用程序后,应用程序可以不立即处理该使事件。这样,当应用程序下一次调用epoll_wait时,ep...原创 2019-05-13 11:19:49 · 9720 阅读 · 0 评论 -
Linux编程入门五定时器
网络程序需要处理的第三类事件是定时事件,比如定期检测一个客户连接的活动状态。服务器程序通常管理着众多定时事件,因此有效组织定时事件,使之能在预期的时间点被触发且不影响服务器的主要逻辑。将每个定时事件分别封装成定时器,并使用某种容器类数据结构,比如链表、排序链表和时间轮,将所有定时器串联起来,以实现对定时事件的统一管理。定时定时是指在一段时间之后触发某段代码的机制。Linux提供了三种定时方法...原创 2019-06-06 09:58:21 · 10802 阅读 · 1 评论 -
Linux编程入门三网络编程六 事件处理模式和并发模式
基于Reactor模式的I/O框架库包含如下几个组件:句柄(Handle)、事件多路分发器(EventDemultiplexer)、事件处理器(EventHandler)、具体的事件处理器(ConcreteEventHandler)、Reactor。句柄:I/O框架库要处理的对象,即I/O事件、信号和定时事件,统一称为事件源。一个事件源通常和一个句柄绑定在一起。句柄的作用是,当内核检测到就绪事件...原创 2019-06-10 11:17:29 · 9275 阅读 · 0 评论