
linux
文章平均质量分 51
好吧我随便改的
抓住最后的机会~
展开
-
首次使用ninja的体验
首先编写CMakeLists.txt,然后cmake -G Ninja生成build.ninja,最后ninja all对该build文件进行编译,生成二进制成果物。首先总结说自己的理解,就是NINJA是一个和MAKE同一级别的编译工具,在CMAKE/GRADLE等工具之下工作。cmake目前可以生成makefile,也可以生成ninja文件(CMAKE选项中增加了-G Ninja)当然也可以直接编写build.ninja文件然后ninja all来编译工程。ninja:源码安装。原创 2023-08-14 18:02:46 · 403 阅读 · 0 评论 -
内存对齐的理解
1.编译器默认的内存对齐规则默认的对齐规则是一个变量的地址需要是其类型的长度的整数倍:例如下面这个结构体:struct A{char m1;short m2;int m3;}对于A变量的m1成员,其大小为1个字节,起始地址为0,可以满足整除的要求对于A变量的m2成员,其大小为2个字节,因此起始地址1不满足被2整除,需要按照2字节对齐,因此,其起始地址为2,占用2,3两个字节对于A变量的m3成员,其大小为4个字节,因此其起始地址4满足整除4这个要求最终该结构的内原创 2021-12-26 13:47:59 · 474 阅读 · 0 评论 -
recv()函数中MSG_PEEK参数的解释(转)
recv默认最后一个flag参数是0,调用完recv,如果socket的接收缓冲区存在数据,则recv调用会从缓冲区中取走数据但是如果flag参数设置为0,则调用完recv,不从接收缓冲区中移除读取的数据。recv()函数中MSG_PEEK参数的解释_sinat_37372543的博客-CSDN博客...转载 2021-10-17 15:21:51 · 737 阅读 · 0 评论 -
Linux平台下二进制安装FastDDS
1. Linux平台下二进制安装该页面主要介绍在linux环境下,使用二进制release安装 eProsima公司的 Fast DDSThe。 安装 内容 运行应用 在一个CMake项目中包含Fast-DDS 卸载 1.1. 安装eProsima Fast DDS在Linux平台下最新的release可以从 Downloads tab站点下载到。下载完成后,将下载的压缩包解压到指定目录,然后在系统中使用有管理员权限的用户来执行翻译 2021-09-06 23:11:30 · 1243 阅读 · 0 评论 -
调查线程死锁/阻塞的一种方法
最近在使用冰羚中间件的时候,发现应用中的订阅者线程从冰羚获取到订阅数据后,经常随机出现阻塞的问题(应该没有死锁,因为只在该线程中访问冰羚订阅数据)现象就是线程的while循环直接停了,并且排除到是sleep的原因(因为日志显示阻塞的时候还没有运行到sleep),由于时间紧迫,为了尽快解决问题,想到从线程栈来排查问题,问题就在于如何在阻塞时查看线程栈,搜索后发现通过给进程发送abort信号,可以产生核心转储文件或者说是墓碑,里面有各个线程的调用栈,经过操作后获取到coredump文件,根据订阅线程所用的函原创 2021-08-28 16:44:57 · 258 阅读 · 0 评论 -
Ubuntu下查看磁盘使用情况的工具
最近工作中遇到下载代码过程中显示根分区磁盘空间不足的问题,发现ubuntu下有个图形工具查看磁盘的使用情况非常方便,叫做Disk Usage A nalyzer原创 2021-06-15 15:28:56 · 709 阅读 · 0 评论 -
冰羚-IceOryx FAQ翻译
iceoryx FAQ这份文档中包含的是一些知识点和文档的链接,用于帮助排查RouDi的问题。偶尔我们也会有一些拓展。Available memory is insufficient(可用内存不足)如果你从RouDi的日志或者输出中看到Available memory is insufficient(可用内存不足),那么这哥时候,RouDi就无法预订共享内存给到发布者了。为了避免这种情况发生,你需要检查一下你的主机环境到底支持多大的共享内存,例如在Ubuntu系统上,你可以用下面的命令来检查:df翻译 2021-05-17 10:59:03 · 814 阅读 · 0 评论 -
冰羚-README.md翻译
iceoryx(冰羚) - 一个建立在POSIX系统上的IPC中间件介绍很高兴您已经接触到了IceOryx这个Eclipse项目,让我们快速了解一下背景,介绍这个项目的范围并且通过一些例子带你入门首先,什么是IceOryx(冰羚)?IceOryx是一个在 POSIX 系统上跨进程通信的的中间件,通过POXIS系统上共享内存的特性来完成一个真正的零拷贝数据传输机制。更多的信息可以在 1000 words iceoryx introduction in the eclipse newslet翻译 2021-05-16 21:26:19 · 2526 阅读 · 1 评论 -
冰羚 example-icedelivery-README.md翻译
icedelivery - 在Posix应用间传输数据介绍这个例子展示了基于冰羚系统的进程间通信(IPC),零拷贝完成数据单向传输的例子它提供了发布者和订阅者应用,这些应用包含了两种风格(Bare-metal版本 以及simplified版本)RouDi, 守护进程RouDi是 Routing and Discovery的别名,这个名称很好的描述了RouDi的任务内容。RouDi负责建立通信,但是不实际参与发布者和订阅者间的通信,可以将RouDi想象为冰羚系统中的交换机。RouDi所负责的另一个翻译 2021-05-15 10:34:34 · 833 阅读 · 0 评论 -
冰羚Planned features.md翻译
计划的特性下面这个列表包含了较高级别的冰羚系统的特性,这些特性将很可能在下一个版本实现Windows和Mac系统平台运行的支持RouDi以及posh runtime的使用手册请求-响应的通信模式同一个主题支持多个发布者范围外的特性下面这些特性不是冰羚系统主要关注的,但是,如果你有想法并且希望他们出现在特性清单上,可以针对这个特性提出请求来讨论是否需要增加。让冰羚系统运行在单片机上...翻译 2021-05-14 16:32:43 · 249 阅读 · 0 评论 -
冰羚中间件 conceptual-guide.md翻译
ContentsIceOryx冰羚系统的结构共享内存管理交互机制IceOryx冰羚系统的结构冰羚的组成如下:一个RouDi守护进程多个加载了"Posh Runtime"运行时的进程RouDi守护进程RouDi 的名称由来是’‘Rou’‘ting 和’‘Di’'scovery,其是冰羚系统的核心,并且负责如下功能:Service discovery(服务发现):RouDi是Publisher(发布者)和Subscriber(订阅者)的中心节点Shared memory man翻译 2021-05-03 17:31:51 · 1635 阅读 · 0 评论 -
内存调查工具 - tinymob使用说明
内存调查工具 - tinymob使用说明实机上操作流程以TestServer进程为例停止进程stop TestServer 启动进程LD_PRELOAD=/存放路径/libtinymob.so TestServer & 画面&机能操作 输出内存分配状态tinymobcat pid > /tmp/TestServer.txt// pid为TestServer进程pid 获取进程map表cat /proc/pid/maps > TestServer.ma...原创 2020-12-24 16:47:53 · 250 阅读 · 1 评论 -
TCP套接字状态
TCP套接字解释 状态意义CLOSED没有使用这个套接字LISTEN套接字正在监听入境连接SYN_SENT套接字正在试图主动建立连接SYN_RECEIVED正在处于连接的初始同步状态ESTABLISHED连接已建立CLOSE_WAIT远程套接字已经关闭:正在等待关闭这个套接字FIN_WAIT_1套接字已关闭,正在关闭连接CLOSING套接字已关闭,远程套接字正在关闭,暂时挂起关闭确认LAST_ACK远程套接字已,正在等待本地套接字的关闭确认FIN_WAIT_2套接字已转载 2020-12-11 14:11:07 · 413 阅读 · 0 评论 -
exit,abort,_exit的区别
1.exitexit调用会让当前进程调用退出处理函数,并且清空IO缓存,然后调用_exit()2._exit调用exit系统调用,终止程序运行,清空进程使用的内存空间,以及在内核中的数据结构3.abortC 库函数void abort(void)中止程序执行,直接从调用的地方跳出。#include <stdio.h>#include <stdlib.h>int main (){ FILE *fp; printf("准备打开 n..转载 2020-11-28 22:16:45 · 393 阅读 · 0 评论 -
virtualbox中给虚拟机加载新硬盘
挂载新磁盘(扩容)1.创建新磁盘(虚拟机关机状态下)(1)virtualbox界面/Settings/Storage/Controller:SCSI +号 (Adds hard disk)/Create new disk/VDI(默认) Next/Dynamically allocated(默认) Next/设置虚拟磁盘的名字和size/Create2.挂载新磁盘(1)查看磁盘:df -h查看可用的磁盘名,比如sdb (不要与已有的磁盘重名)(2)格式化磁盘虚拟机开机/按w原创 2020-11-14 13:03:06 · 548 阅读 · 0 评论 -
SELINUX初步理解
SELinux简介1. 系统中所有的文件都必须打上SELinux的标签, 多个文件可以打上同一个标签2. 每个进程运行在一个单独的domain中3. 每个进程需要访问任何文件都需要进行显示的声明, 声明该domain对某标签的权限系统中的每个进程会分配一个domain,每个domain有自己的te文件,te文件中显示声明了该domain有哪些权限。每个进程做系统设计的时候,需要整理一份MAC权限表格, 编译系统会根据所有的excel表格生成selinux的策略文件...原创 2020-10-25 22:01:20 · 185 阅读 · 0 评论 -
如何处理下载的tgz格式安装文件
tgz文件是linux下的一种压缩文件格式(如windows下的.rar或.zip),必须先解压出du来,然后配置安装,可zhi以使用命令:1.解压缩至当前目录2.cd命令切换到解开的目录中3.然后执行命令进行安装配置 ./configure4.等到配置完成后执行 make5.编译完后,安装 makeinstall6.最后清除掉配置编译的一些文件 makeclean...转载 2020-10-12 21:03:20 · 3938 阅读 · 0 评论 -
操作系统交换页面入门理解
对于操作系统来说,当物理内存不足以满足为当前进程增加新的页面的时候,需要将当前内存中的页面置换出去,置换出去的页面一般是存放到磁盘上的,在linux下,有一种文件系统叫做交换分区,就是用来存放被操作系统从内存中置换出去的页面。 一般有两种模式用来实现交换分区的功能: a.交换分区中保存进程的所有页面的副本 这种模式下,进程启动后,交换分区中就为该进程的虚拟内存空间分配了一...原创 2018-03-19 20:47:45 · 4259 阅读 · 0 评论 -
管道和XARGS
近半年一直在linux环境下进行开发,使用的版本工具为svn每次提交代码时候,我都是使用svn st|svn ci -m 'xxxxxx'进行代码提交,我一直以为svn st首先列出需要上传的代码列表,然后通过管道到svn ci命令进程中。直到今天同事看到我这样操作,来问我为什么需要在svn ci前面svn st,我才发现了自己对于linux命令和管道认识上的一个巨大的错误。首先,对于管道(|)来...原创 2018-03-14 16:45:35 · 237 阅读 · 0 评论 -
什么是xserver和xclient
在xwindows体系中,提供界面显示,响应外设操作的是xserver,而运行程序业务逻辑,接受xserver发来的各种事件通知的,是xclient。当xclient和xserver 在同一台机器上的时候,这种情况下,应用程序调用xclient的接口请求xserver为创建窗口,应用程序可以通过xlib库的过程调用请求xserver创建窗口中子元素,例如滑动条,按钮等。而xserver的作用是提供...转载 2018-05-05 19:38:55 · 7262 阅读 · 0 评论 -
linux find根据时间条件查找文件
find / -amin -10 # 查找在系统中最后10分钟访问的文件find / -atime -2 # 查找在系统中最后48小时访问的文件find / -mmin -5 # 查找在系统中最后5分钟里修改过的文件find / -mtime -1 #查找在系统中最后24小时里修改过的文件...转载 2018-06-12 14:29:45 · 4180 阅读 · 0 评论 -
ps命令查看具体进程的所有线程
ps -p [PID] -t转载 2019-01-21 14:42:07 · 4037 阅读 · 4 评论 -
linux系统/proc目录下的子目录功能
/proc是一个虚拟文件系统,其下面的文件不是真实存在的,不占用实际存储空间。/proc/cmdline:显示内核启动的命令行。/proc/cpuinfo:显示系统cpu的信息。/proc/filesystems,显示当前注册了的文件系统列表,nodev表示为虚拟文件系统。/proc/interrupts:显示当前系统的中断信息./proc/ioports:被占用的输入/输出地址范围列表...转载 2019-02-11 14:00:27 · 389 阅读 · 0 评论 -
一个简单的MAKEFILE示例
最近在自己编写自己的测试项目时觉得每次都是用G++命令去编译自己的项目还是有点麻烦,也是时候去学一学Makefile的写法了。因此,针对自己的测试项目的特点(不太使用外部链接库),写了一个较为简单的MAKEFILE,也学到了不少makefile中的知识点#目标文件名TARGET_NAME=protectedFile#目标文件类型(可执行,静态库,动态库)TARGET_PREF...原创 2017-08-31 18:03:46 · 350 阅读 · 0 评论 -
linux VolumnGroup
linux下VolumnGroup的作用是将一个或者多个物理磁盘上的一个或者多个物理分区整合起来形成一个抽象的物理卷,然后用户可以从这个整合的抽象的物理卷上分配自己需要的逻辑卷,而不用操作在哪个磁盘设备上面建立逻辑卷。 例如,如果有三块硬盘,除去的第一块盘上划分出的一个物理卷用来安装系统,第一块盘上剩下的分区以及其他两块盘上的所有空间首先被系统建立为三个物理卷(phy...转载 2018-03-16 14:45:49 · 273 阅读 · 0 评论