Linux
文章平均质量分 52
聆听--风雨
这个作者很懒,什么都没留下…
展开
-
wsl2 固定IP && windows与wsl里的docker镜像互联互通
首先按照给wsl2的ubuntu分配固定IP,优化windows开发环境 - 知乎这里说的给wsl设置个固定的IP然后按照wsl2中docker内部网络的端口转发-云海天教程这里说的设置ip转发即可。完了之后windows可以直接访问docker镜像的IP,还是很赞的。...原创 2022-04-12 20:11:07 · 3341 阅读 · 0 评论 -
rust 在x64平台上交叉编译aarch64的成果物
rust 在x64平台上交叉编译aarch64的成果物原创 2022-03-26 12:46:25 · 2991 阅读 · 2 评论 -
valgrind massif vgdb 排查内存泄露问题(适用于大工程)
前言Valgrind中的memcheck工具也能排查内存泄露,但是主要是用于排查分配与释放不匹配,少释放或多释放等问题。但是如果一个模块不断的申请内存,但是从来没释放造成的内存堆积,用memcheck就检测不出来了。此时需要使用massif。massif的基础原理是隔一段时间拍一个内存快照,通过对比不同快照间的差距,分析出那些模块内存在不断上涨。代码量大(百万行)时,使用massif产生快照文件会用很长时间。所以本文使用massif +vgdb的方式来排查。使用方法运行massif原创 2022-03-02 19:02:54 · 884 阅读 · 0 评论 -
Linux下编译链接动态库符号问题
一般大型的项目会有许多个动态库、静态库。许多个库可能会有符号冲突的问题,如果不对符号进行管理,会引发各种意想不到的问题。原创 2022-01-01 09:45:00 · 1236 阅读 · 0 评论 -
gdb 调试无符号程序 反汇编查看入参
在调试C/C++程序时,如果所调试的程序时无符号的,此时可以通过反汇编来进行调试。原创 2021-12-25 10:00:00 · 1689 阅读 · 2 评论 -
gdb 定位死锁问题
gdb 定位死锁问题转载 2021-12-20 20:14:51 · 415 阅读 · 0 评论 -
C++使用boost::filesystem和statfs遍历Linux根目录并获取磁盘空间
boost::filesystem可以进行跨平台的文件操作,Linux下statfs可以获取挂载点的文件系统信息(Windows下要用windows的API)。原创 2021-11-27 09:45:00 · 1215 阅读 · 0 评论 -
Linux下解决父子进程端口冲突的两种方法——解决端口继承问题
Linux下解决父子进程端口冲突的两种方法案例背景 在项目实践过程中经常会遇到需要A服务(进程)拉起B服务(进程)的场景,此时B进程作为A进程的子进程会继承A进程的一些资源、比如socket句柄、文件描述符等。如果在这之后,A进程退出,B进程依然会占有之前从A进程继承到的资源。此时如果A进程退出之后再启动,可能就会因为资源被占用而产生问题。问题实例为了演示上述问题,首先,我们作为子进程......原创 2019-08-20 10:35:03 · 2313 阅读 · 0 评论 -
代码是如何被运行的——链接、装载与库
代码是如何被运行的——链接、装载与库前言 最近在读业界盛传的《程序员的自我修养》,这本书从普通C/C++程序代码如何被编译成目标文件及程序在目标文件中如何存储一直讲到静态链接、动态链接等,最后讲解运行库、Glibc的实现分析。 虽然书名听上去简单,但需要强调的是,这绝不是一本适合入门级的程序员读的书。全书总体来讲,细而全,涉及到的知识有编译原理、操作系统、线程、进程、内核编程等知识,如果...原创 2019-06-24 21:11:29 · 589 阅读 · 0 评论 -
centos7下实现U盘自动挂载自动卸载
U盘的自行挂载需要依赖udev模块,目前操作系统已默认安装。udev的工作流程如图所示。所以要做的一共分为三步:1、修改配置文件(udev.conf)修改配置文件主要是修改规则文件的所在目录,默认是在/etc/udev/rules.d下。udev_root="/dev/"udev_rules="/etc/udev/rules.d/"udev_log="err"...原创 2019-01-17 14:46:31 · 5672 阅读 · 11 评论 -
《UNIX环境高级编程》阅读笔记
这本书后续需要再读一遍第一章 UNIX基础知识1、文件描述符通常是一个小的非负整数,内核用以标识一个特定进程正在访问的文件。2、open、read、write、lseek以及close提供了不带缓冲的IO。标准I/O函数为那些不带缓冲的I/O函数提供了一个带缓冲的接口。3、程序是一个存储在磁盘上某个目录的可执行文件,内核使用exec函数将程序读入 内存,并执行程序。进程是程序的一个...原创 2018-12-05 17:32:11 · 1745 阅读 · 0 评论 -
Linux下通过pid文件来实现进程同步、程序的单例
pid文件就记录了程序的进程id,一般程序不会创建,但是在某些情况下,如果想要实现进程间的同步,就会用到pid,比如,想要实现系统中同时只能运行一个程序,即不允许多开。比如手机微信、QQ、等,都是不允许多开的。 实现代码如下:#include <iostream>#include <unistd.h>#include <fcntl.h>#...原创 2018-12-04 15:18:27 · 788 阅读 · 0 评论 -
Linux开发笔记暨Linux常用代码
最近公司项目需要把原本windows的代码搞成可跨平台的,过程中遇到一些跨平台方面的细节,记录在这里。 1、Linux端口检测检测端口是否被占用,这个在windows平台下一般用GetTcpTable系统API来实现。而在Linux下没有直接的API,在网上看看了最终提出一个解决方案,就是通过调用bind来判断端口是否被占用。如果有其他更好的解决方案麻烦告知一下。#include...原创 2018-12-04 15:13:13 · 366 阅读 · 0 评论 -
RPM打包C++程序实例
1.首先找到打包目录 $ rpm --showrc|grep _topdir-14: _builddir %{_topdir}/BUILD-14: _rpmdir %{_topdir}/RPMS-14: _sourcedir %{_topdir}/SOURCES-14: _specdir %{_topdir}/SPECS-14: _srcrpmdir %{_topd...原创 2017-07-13 09:33:02 · 951 阅读 · 0 评论 -
shell脚本编写入门
chmod +x test.sh 给脚本授权#!/bin/bash#接受命令行参数#第一个参数为脚本文件名本身#从第二个参数之后也就是$1之后的参数才是用户输入的参数echo "First $0"echo "Second $1"echo "Third $2"echo "Hello world!"your_name="qinjx"echo $your_namefor...原创 2017-07-04 14:15:40 · 409 阅读 · 0 评论 -
linux下boost库的安装及使用
1.下载源文件去官网下载:http://www.boost.org/这里下载最新版本 wget https://dl.bintray.com/boostorg/release/1.64.0/source/boost_1_64_0.zip2.生成工具 进入解压缩的文件中,运行脚本./bootstrap.sh 会生成b2和bjam可执行程序 3.编译运行...原创 2017-07-27 12:54:34 · 2235 阅读 · 0 评论 -
Linux基本常用命令
一、基本命令ls -a 查看所有文件ls -l 查看所有信息rm -r 递归删除,可以删除文件夹rm -f 强制删除mv 剪切或者重命名cp 拷贝top 动态查看资源占用信息cat file查看文件内容teamviewer --info 查看teamviewer信息makdir 创建文件夹df -h 查看磁盘空间scp 在不同主机之间拷贝文件 -r递归 -P指定...原创 2017-04-09 13:46:10 · 1462 阅读 · 0 评论 -
Linux相关知识
1.Linux操作系统的开机流程 +2从BIOS提取MBR信息->加载引导GRUB->加载内核->运行init进程->系统初始化->建立终端->登录系统,启动完成开机后怎么启动一个程序chmod +x hahad #增加执行权限chkconfig --add hahad #把hahad添加到系统服务列表chkconf原创 2017-08-23 16:26:30 · 323 阅读 · 0 评论 -
windows下使用Linux命令
Linux上的命令很强大,如果想在windwos上使用linux命令可以使用Gunwin321.下载getGunwin32.exe:https://sourceforge.net/projects/getgnuwin32/下载完之后直接点击运行,然后选择一个目录存储将要下载的中间文件,比如:E:\software\Gun322.进入E:\software\Gun32\GetGnuWin原创 2017-12-18 15:05:35 · 1249 阅读 · 0 评论 -
Linux下C++性能测试工具valgrind的使用
1.安装 valgrind是开源的性能分析利器。 根据它的文档,可以用它来检查内存泄漏等问题,还可以用来生成函数的调用图,就这两个功能就足够有吸引力了(1)从http://valgrind.org下载最新的valgrind tar -xfvalgrind-3.7.0.tar.bz2解压安装包。(2)执行./configure(3)make(4)make insta...原创 2017-07-28 12:45:02 · 758 阅读 · 0 评论 -
Linux下C++ 性能测试工具GPROF()入门教程
一、前言参考GPROF用户数手册:http://sourceware.org/binutils/docs-2.17/gprof/index.html参考博客:http://blog.csdn.net/stanjiang2010/article/details/5655143GPROF是GCC自带的性能测试工具,可以统计出各个函数的调用次数、时间、以及函数调用图。二、教程使用GR...原创 2017-07-10 12:24:35 · 16085 阅读 · 7 评论 -
Linux环境下C++单元测试Gtest 入门
简介Goodtest是一款强大的C++单元测试框架,可以在Linux,Windows上等多种平台上互动可以在这里下载:https://github.com/google/googletest然后按照教程进行配置就可以了ASSERT_*是fatal判断,一旦为false,程序将终止,还可能发生内存泄漏EXPECT_*为false后测试程序会输出相关信息,并继续运行用户自定义的类如...原创 2017-06-30 15:12:32 · 1637 阅读 · 0 评论 -
Linux下的raw Socket(原始套接字)编程
前言本文所述代码托管在https://github.com/Wuchenwcf/MyCode/blob/master/C%2B%2B/Linux/rawSocketTest.cpp简介最近项目需要用到rawSocket来进行自定义IP报文的源地址。windows从winxp sp2开始便对raw socket进行了限制。【1】只能发送UDP包【2】只能发送正确的UDP包...原创 2017-06-29 11:21:46 · 21375 阅读 · 24 评论 -
Linux内核与编程
1.每一个进程都至少打开三个文件:标准输入、标准输出、错误输出2.Linux并不对线程和进程进行区分,对Linux而言,线程是特殊的进程。3.进程=程序+资源,但是线程只有程序没有资源,资源由进程支配4.fork系统调用从内核返回两次,一次返回到父进程,一次回到新产生的子进程。int pidpid=fork();if(pid==0) 执行子进程else父进程5.子进程执原创 2017-03-01 21:44:17 · 2705 阅读 · 5 评论