
Linux
文章平均质量分 68
arbboter
也曾梦想上天,还是默默无闻,而今迈步从头越
展开
-
【Linux编程】IPC之消息队列从踩坑到实战:核心原理、实战案例与C++封装详解(含完整代码)
本文详细介绍了Linux系统中消息队列的使用方法,包括核心函数解析(msgget、msgsnd、msgrcv、msgctl)和常见踩坑点,并通过生产者-消费者案例展示了其实战应用。进一步封装了一个通用的C++模板类MessageQueue,提供消息创建、发送、接收、删除和状态查询功能,具备类型安全、异常处理和资源管理特性。文章还探讨了性能优化建议和调试工具,适合需要进程间通信的开发者参考。原创 2025-03-18 21:06:48 · 896 阅读 · 0 评论 -
Linux最简单的网络通信
服务器端/* socket server * 2014-12-15 CopyRight (c) arbboter */#include #include #include #include #include #include #include #include #include int main(){ int sockfd_server; int so原创 2014-12-16 09:00:40 · 1642 阅读 · 0 评论 -
Linux的TCP基础编程
网络地址数据结构问题首先,先来说网络中的编程地址,不知有没有人发现在我们网络编程中不仅仅只有一个地址数据结构,而且很多时候我们在调用网络接口的时候还要强制转换参数的类型。对,我说的就是数据结构sockaddr和sockaddr_in这两货,而如果你足够仔细的话,你会发现,编程中我们使用的大部分是sockaddr_in,但是我们调用的网络接口却几乎都是(不知道有没有不是的啊,我木有去调查)soc原创 2015-01-14 23:03:00 · 2136 阅读 · 0 评论 -
那些关于UNIX进程的话题
1.fork:一个现有进程可以调用fork函数创建一个新进程。由fork创建的新进程被称为子进程(child process)。fork函数被调用一次但返回两次。两次返回的唯一区别是子进程中返回0值而父进程中返回子进程ID。子进程是父进程的副本,它将获得父进程数据空间、堆、栈等资源的副本。注意,子进程持有的是上述存储空间的“副本”,这意味着父子进程间不共享这些存储空间。UNIX将复制父进程的地原创 2014-11-22 11:16:28 · 1374 阅读 · 0 评论 -
Linux线程基本使用代码示例
#include #include #include void* thread_func(void* param){ const char* p = (const char*)param; pid_t pid = 0; pthread_t tid = 0; pid = getpid(); tid = pthread_self(); prin原创 2014-12-15 16:49:08 · 1429 阅读 · 0 评论 -
我的VIMRC
filetype plugin onsyntax on原创 2014-11-19 17:41:50 · 1107 阅读 · 0 评论 -
SSH自动登录脚本
#!/usr/bin/expect -fset timeout 10set name [lindex $argv 0]set pwd [lindex $argv 1]set ip [lindex $argv 2] spawn ssh -l $name $ipexpect "password:" send "$pwd\r" interact原创 2015-04-27 09:56:50 · 1212 阅读 · 0 评论 -
Visual Studio 2019 + WSL + Linux(Ubuntu)程序配置开发
安装Visual Studio 2019在安装Visual Studio 2019时,需要勾选Linux开发环境选项,即勾选“使用C++的Linux开发”工具集,如下图所示:创建Linux类型项目启动已经安装好的Visual Studio 2019,创建新项目选择,如下图所示:项目新建完成后,IDE已经自动帮我们编写完成一个HelloWorld的程序代码。因为程序需要在Linux上编译...原创 2019-09-25 17:27:07 · 16168 阅读 · 0 评论 -
协程库libco学习使用入门示例
简介libco是微信后台大规模使用的c/c++协程库,2013年至今稳定运行在微信后台的数万台机器上。libco通过仅有的几个函数接口 co_create/co_resume/co_yield 再配合 co_poll,可以支持同步或者异步的写法,如线程库一样轻松。同时库里面提供了socket族函数的hook,使得后台逻辑服务几乎不用修改逻辑代码就可以完成异步化改造。libco是一个源码简洁而...原创 2019-09-25 17:32:09 · 6971 阅读 · 8 评论 -
libco源码学习解读
libco源码学习解读简介顺着上一篇文章示例,这里对文章中所涉及的函数及数据类型逐一进行深入分析,以期深入学习理解libco的实现原理,帮助我们加深对协程的理解,并帮助我们更加有效地使用libco协程库并排查问题。创建协程co_create该函数用于创建一个协程对象,其实现源码如下:int co_create(stCoRoutine_t** ppco, const stCoRoutine...原创 2019-09-26 16:16:01 · 705 阅读 · 0 评论 -
libco协程示例-多协程任务代码(类似多线程)
libco协程示例-多协程任务代码(类似多线程)简介在我们平常的工作及测试过程中,涉及到多个任务并行工作时我们一般会考虑使用多线程方案,多线程的方案方便我们在同一个程序中并行执行多个任务,不仅可以一心多用,而且还可以有效地提升机器的使用效率。考虑到协程是一种更轻量级的多任务并行方案,因此我们在遇到允许使用多线程的时候不妨停下来想想,是不是可以使用协程替代线程,从而达到相同的效果。本文根据l...原创 2019-10-08 14:41:37 · 676 阅读 · 0 评论 -
Linux的UDP基础编程
UDP通信机制相比较于TCP通信,UDP通信是面向无连接的通信,所以没有TCP中的监听和连接等涉及面向连接的过程,UDP的主要通信过程如下图所示:相比较TCP通信,UDP相对而言比较简单,虽然UDP是无连接的通信,但是依然有服务器和客户端之分,且通信的时候直接指定对方地址即可,无视对方是否能收到你发送的消息。且UDP通信不再使用read/write发送消息和读取消息了,因为没有连接原创 2015-01-16 17:15:59 · 1996 阅读 · 0 评论 -
MarkDown学习
概要Markdown 的目标是实现「易读易写」。可读性,无论如何,都是最重要的。一份使用 Markdown 格式撰写的文件应该可以直接以纯文本发布,并且看起来不会像是由许多标签或是格式指令所构成。Markdown 语法受到一些既有 text-to-HTML 格式的影响,包括 Setext、atx、Textile、reStructuredText、Grutatext 和 EtText,而最大...原创 2014-12-22 19:28:24 · 1855 阅读 · 0 评论 -
使用FAAC转换PCM为AAC
FAAC是一个MPEG-4和MPEG-2的AAC编码器,其特性是:可移植性好,快速,支持LC/Main/LTP,通过Dream支持DRM,代码小相对于FFMPEG的AAC转码,FAAC实在是微乎其微,而且可以直接把代码加到工程里面编译,也可使用静态库,而没有巨大的动态库的烦恼。原创 2015-01-26 15:23:40 · 9868 阅读 · 5 评论 -
VIM命令详解
关注Perl...关注软件测试随笔 - 137, 文章 - 0, 评论 - 22, 引用 - 0Vim命令合集命令历史以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令。启动vim在命令行窗口中输入以下命令即可vim 直接启动vimvim filename 打开vim并创建名为filenam转载 2014-08-22 10:22:36 · 1134 阅读 · 0 评论 -
简单的函数热点分析类
一个实现监视函数耗时和调用的lei原创 2014-08-26 10:36:39 · 2009 阅读 · 0 评论 -
C\C++控制台颜色设置类
windows和Linux都可用的一个类...用来设置颜色,没有太复杂,简单够用吧。#ifdef _WIN32#include class FontColor{public: FontColor() { m_hStdOut = GetStdHandle(STD_OUTPUT_HANDLE); } void SetColor(int nColor) { SetConso原创 2014-08-27 16:07:17 · 2066 阅读 · 0 评论 -
文件和目录相关函数列表
文件和目录stat : 获取文件信息fstat : 获取文件信息lstat : 获取文件信息,如果为symbol,则和stat有出入access : 获取对文件的访问权限,可用来查看文件是否存在umask : 为进程设置文件模式创建屏蔽字chmod : 修改文件访问权限fchmod : 修改已打开文件的访问权限chown : 修改文件所有者fchown : 修改已打开文件的所有者原创 2014-11-18 16:21:48 · 1211 阅读 · 0 评论 -
文件IO相关函数列表
Linux/Unix 文件IO函数列表open : 打开或创建文件,可检查文件是否存在create : 创建文件,可检查文件是否存在close : 关闭文件read : 从文件描述符读取数据write : 向文件描述符写入数据lseek : 修改文件偏移地址pread : 定位读取数据pwrite : 定位写入数据dup : 复制文件描述符dup2 : 复制描述符,但会指定新的原创 2014-11-18 14:44:58 · 1465 阅读 · 0 评论 -
标准I/O库----缓冲
#include #include #include #include #include #include int main(int argc, const char * argv[]){ char buf[] = "abc"; /* 行缓冲,不会立即输出每个buf,而是一下子全部输出 */ for (int i=0; buf[i]; i原创 2014-11-20 10:41:41 · 1403 阅读 · 0 评论 -
Linux--时间处理相关
时间处理相关结构图如下:原创 2014-11-21 16:10:10 · 1106 阅读 · 0 评论 -
NFS配置使用
通过nfs使得文件目录共享非常方便,客户端需要访问远程目标目录时和访问本地文件具有相同的体验。这里记录一下Ubuntu的NFS配置的方法。原创 2015-01-27 12:42:14 · 3050 阅读 · 0 评论 -
GDB调试Core文件
关于Core文件Linux程序在运行过程中可能会出现奔溃的现象,此时启用Core文件可以记录程序的奔溃现场,方便事后查找问题。原创 2015-01-27 14:48:39 · 3679 阅读 · 0 评论 -
Linux文本处理工具
1.awk awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。awk相当于一门编程语言,有自己的很多语法,不过语法很简单,和C语言类似,语法要素有比如逻辑比较,if,内置变量,字符串处理函数,数组,循环语句这样的。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。awk执行时,原创 2014-12-01 17:29:10 · 1291 阅读 · 0 评论 -
Ubuntu修改桌面分辨率
免责提醒简单有效的手工修改桌面分辨率,不过需要管理员权限,慎!改坏不予负责方法步骤修改默认配置$ sudo gedit /etc/default/grub查找行这一行#GRUB_GFXMODE=640×480制定分辨率为自己所需,比如1920x1080修改/etc/grub.d/00_header文件$ sudo gedit /etc/grub.d/00_hea原创 2015-01-26 18:06:07 · 3294 阅读 · 0 评论 -
gdb命令
rrun运行.程序还没有运行前使用c cuntinue 运行到下一断点处qquit 退出tabtab命令补全功能h help帮助sstep跟入函数nnext执行下一行的代码。如果是函数调用,也当作一行转载 2014-07-11 16:01:09 · 1023 阅读 · 0 评论