
Linux
文章平均质量分 71
n大橘为重n
/* 一个有点小情怀的码农 */
展开
-
如何使用gdb调试多线程死锁问题,并定位触发死锁的线程
gdb调试多线程、多线程死锁问题原创 2022-06-08 15:44:39 · 2569 阅读 · 1 评论 -
如何快速定位程序Core?
1. 程序Core定义及分类程序core是指应用程序无法在保持正常running状态而发生的崩溃行为。程序core时会生成相关的core-dump文件,core-dump文件是程序崩溃时程序状态的数据备份。core-dump文件包含内存、处理器、寄存器、程序计数器、栈指针等状态信息。我们可以借助core-dump文件分析定位程序Core的原因。这里我们从三个方面对程序Core进行分类:机器、资源、程序Bug。下表对常见的Core原因进行了分类: 分类 原因转载 2021-07-06 18:36:54 · 1398 阅读 · 0 评论 -
Linux 命令中 more、less、head、tail 命令的用法
more 命令功能类似 cat ,cat 命令是将整个文件的内容从上到下显示在屏幕上。 more 命令会一页一页的显示,方便使用者逐页阅读,而最基本的指令就是按空白键(space)往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能 。more 命令从前向后读取文件,因此在启动时就加载整个文件。(1)命令格式more [选项] 文件(2)常用参数参数 描述+n 从笫 n 行开始显示-n 定义屏幕大小为 n 行+/pattern 在每个档...转载 2021-04-04 11:35:20 · 464 阅读 · 0 评论 -
Linux下常用压缩 解压命令和压缩比率对比
常用的格式有: tar, tar.gz(tgz), tar.bz2,不同方式,压缩和解压方式所耗CPU时间和压缩比率也差异也比较大。1. tar 只是打包动作,相当于归档处理,不做压缩;解压也一样,只是把归档文件释放出来。(1)打包归档格式:tar -cvf examples.tar files|dir#说明:-c, --create create a new archive 创建一个归档文件-v, --verbose verbosely list files processed原创 2021-03-21 18:13:44 · 14739 阅读 · 1 评论 -
Kubectl常用命令大全
参考:https://www.jianshu.com/p/07455dbfd6bbKubectl 常用参数分类基础命令:create,delete,get,run,expose,set,explain,editcreate 命令:根据文件或者输入来创建资源# 创建Deployment和Service资源$ kubectl create -f demo-deployment.yaml$ kubectl create -f demo-service.yamldele..转载 2021-03-19 13:44:53 · 743 阅读 · 0 评论 -
生成独立的gcc调试文件及利用调试文件调试core文件
1、生成独立的gcc调试文件编译调试信息:gcc -g -o main main.c分离调试信息:objcopy--only-keep-debug main main.debug或者cp main main.debug strip--only-keep-debug main.debug从原始文件中剥离调试信息:objcopy --strip-debug main或者strip --strip-debug --strip-unneeded main通过..原创 2021-03-18 22:41:51 · 4190 阅读 · 0 评论 -
linux如何将一个正在运行的进程转入到后台执行
要求:将一个正在当前前台执行的进程转入后台执行,并且要求退出shell后依然保持不退出进程。 ctrl+zto stop (pause) the program and get back to the shell bgto run it in the background disown -h [job-spec]where [job-spec] is the job number (like%1for the first running job; find about your n原创 2021-03-11 13:31:00 · 4742 阅读 · 0 评论 -
netstat命令查看 进程占用的端口 以及某个端口是否被占用
1 查看进程占用的端口(需要用到进程的pid)[root@localhost ~]# netstat -ntlp | grep 1221tcp 0 0 0.0.0.0:8750 0.0.0.0:* LISTEN 1221/./bin/sub_vid进程1221 占用端口8750;2 查看某个端口是否被占用[root@localhost ~]# netstat -ntlp | grep 8750t...原创 2021-02-20 17:46:32 · 4981 阅读 · 0 评论 -
关于typedef void (*sighandler_t)(int)的理解
最近,在学习Linux信号量时,看到signal函数中typedef的一个用法,觉得很有意思。于是就拿出来说道说道。 它定义了一个类型sighandler_t,表示指向返回值为void型(参数为int型)的函数(的)指针。它可以用来声明一个或多个函数指针。 sighandler_t sig1, sig2; 这个声明等价于下面这种晦涩难懂的写法: void (*sig1)(int), (*sig2)(int); 1. 关于typed...转载 2020-10-22 19:45:19 · 1231 阅读 · 1 评论 -
SignalHandler 处理系统信号
在服务器端后台开发中,常常需要写 daemon 程序在后台默默执行一些任务。除了正常的逻辑之外,还需要考虑处理异常退出时怎么办。这时可以用到 signal 这个函数来注册异常信号的回调函数。示例#include <iostream>#include <csignal>#include <time.h>#include <stdlib.h>#include <unistd.h>using namespace std;void转载 2020-10-20 11:22:18 · 3899 阅读 · 0 评论 -
BOOST 之filesystem, path
目录[-]使用 boost::filesystem 的第一个程序 清单 1. 用于确定某个文件的类型是否为 Directory 的代码 了解 Boost path 对象 清单 2. 创建 Boost path 对象的方法 清单 3. 使用本机格式初始化 path 清单 4. 使用可移植格式初始化 path path 成员函数概述 清单 5. 使用 path::iterator(begin 和 end 接口) 清单 6. 路径字符串的串联 错误处理 清单 7. Boost 中的错误处理转载 2020-10-19 17:25:03 · 3281 阅读 · 0 评论 -
prctl函数的应用
intprctl( intoption,unsigned long arg2,unsigned long arg3,unsigned long arg4,unsigned long arg5 )这个系统调用指令是为进程制定而设计的,明确的选择取决于option:PR_GET_PDEATHSIG :返回处理器信号;PR_SET_PDEATHSIG :arg2作为处理器信号pdeath被输入,正如其名,如果父进程不能再用,进程接受这个信号。PR_GET_DUMPABLE :返回处理器标...转载 2020-10-14 16:58:23 · 698 阅读 · 0 评论 -
C/C++在程序中获取CPUID+网卡Mac的几种方法
直接上代码。命令行获取到结果之后需要将16值字符串转换成整数:int tolower(int c){ if (c >= 'A' && c <= 'Z') { return c + 'a' - 'A'; } else { return c; }}unsigned long htoul(char s[]){ int i; unsigned long n = 0; if (s[0] == '0' && (s[1]=='x' ||原创 2020-07-31 21:02:14 · 1941 阅读 · 1 评论 -
基于ARM架构的芯片获取CPU信息(cpuID)的多种方法
由于工作的原因,要获取到ARM芯片的cpuid。了解下存储cpu信息的寄存器内容:CPUID寄存器内容:字段名:Implementer(venter 销售ID)|Variant(大版本号) | Architecture(架构版本)| Part Num(产品代码)|Revision(小版本号)基址偏移量: [31-24] | [23-20] | [19-16]原创 2020-07-31 20:52:30 · 15947 阅读 · 3 评论 -
网络编程——C++实现socket通信(TCP)高并发之epoll模式
相关链接:TCP连接与释放、网络编程——C++实现socket通信(TCP)相关函数:服务端:socket()bind()listen()epoll_create() 高并发poll模式epoll_ctl()epoll_wait()accept()read() 或 recv()等write() 或 send()等close()客户端:socket()connect()write() 或 send()等read() 或 recv()等close()着重说明下epol原创 2020-06-29 14:15:49 · 6550 阅读 · 2 评论 -
epoll中epoll_data_t 中fd和ptr的用法
文章是网上内容总结,为了自己下次好找,所以写到自己博客里边了。typedef union epoll_data {void *ptr;int fd;__uint32_t u32;__uint64_t u64;} epoll_data_t;struct epoll_event {__uint32_t events; /* Epoll events /epoll_data_t data; / User data variable */};epoll_data中fd存放文件描述符,所以我们一转载 2020-06-26 20:36:12 · 2149 阅读 · 0 评论 -
epoll详解及优点
epoll详解更详细的讲解-->【Linux学习】epoll详解什么是epoll? epoll是为处理大批量句柄而作了改进的poll, 是性能最好的多路I/O就绪通知方法; 只有三个系统调用: epoll_create, epoll_ctl, epoll_wait; epoll_ctl - epoll的事件注册函数,它不同于select()是在监听事件时告诉内核要监听什么类型的事件,而是在这里先注册要监听的事件类型; epoll的工作原理 epoll同样只告知那些就绪的文件描转载 2020-06-26 18:22:15 · 2509 阅读 · 0 评论 -
网络编程——C++实现socket通信(TCP)高并发之select模式
相关链接:TCP连接与释放、网络编程——C++实现socket通信(TCP)相关函数:服务端:socket()bind()listen()FD_ZERO()等辅助函数select() 高并发select模式accept()read() 或 recv()等write() 或 send()等close()客户端:socket()connect()write() 或 send()等read() 或 recv()等close()着重说明下select函数及辅助函数用法说明。原创 2020-06-18 11:35:22 · 3601 阅读 · 1 评论 -
网络编程——C++实现socket通信(TCP)
相关链接:TCP连接与释放相关函数:服务端:socket()bind()listen()accept()read()write()close()客户端:socket()connect()write()read()close()注意:每当服务端连接断开后,废话不多说,上源码!服务端TCP_Server.cpp#include <stdio.h>#include <sys/types.h>#include <sys/socket.h原创 2020-06-10 16:09:23 · 16031 阅读 · 3 评论 -
U盘安装mips架构的Deepin(或UOS)系统及配置适用的源
安装环境请确保您的电脑满足以下的配置要求,如果您的电脑配置低于以下要求,将无法完美地体验深度操作系统:内存:至少2G内存(RAM),4G 以上是达到更好性能的推荐值 硬盘:至少25 GB的空闲空间(我所用的处理器是mips64el的龙芯3A3000)您还需要一个U盘,或一张光盘以及光驱,然后在深度科技官方网站下载镜像文件并制作启动盘。安装过程一般情况下电...原创 2020-04-07 14:54:46 · 6572 阅读 · 5 评论 -
qemu模拟mips架构的ubuntu系统后,,生成的可执行文件放到宿主机上执行报错 /lib/ld-linux.so.3: No such file or directory
qemu模拟mips架构的ubuntu系统后,,生成的可执行文件放到宿主机上执行报错 /lib/ld-linux.so.3: No such file or directory下面是我网上搜到的相关文章,解决了我的困惑:今天在Ubuntu9.04下搭建了一下Scratchbox交叉编译环境,并在新建的ARM模拟器上对Scratchbox自带的hello-world程序进行编译,运行时出现...原创 2020-04-01 20:54:30 · 1193 阅读 · 0 评论 -
在x86平台制作龙芯版debian 10系统(mips64el)+配置精简系统
一、制作mips64el架构的系统OS:ubuntu 16.04使用debootstrap制作根文件系统会分成两个阶段。第一阶段是,使用debootstrap命令来下载软件包。 第二阶段是安装软件包。安装debootstap 等相关工具$ sudo apt install binfmt-support qemu qemu-user-static debootstrap使用d...原创 2020-04-01 20:47:11 · 6264 阅读 · 1 评论 -
再记录一个Linux查找段错误的利器——addr2line命令
通过这个命令,可以将函数地址解析为函数名,并确定地址的行数。Addr2line 工具(它是标准的 GNU Binutils 中的一部分)是一个可以将指令的地址和可执行映像转换成文件名、函数名和源代码行数的工具。这种功能对于将跟踪地址转换成更有意义的内容来说简直是太棒了。所以当有段错误的时候,通过地址偏移量或者地址直接定位错误所在位置。使用-e选项来指定可执行映像是test。通...原创 2020-02-27 15:01:34 · 825 阅读 · 0 评论 -
E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关
系统:Uos 20问题:E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系产生原因:通过apt-get install安装软件或依赖等的时候之前因为上述问题,我数次搞崩溃了系统,而这次我前去百度,终于找到了靠谱的解决办法。百度上我看到两种说法,大部分人说是apt源的问题,但是亲测无效(我试了阿里和清华的源,都没用)。而我更支持这篇博客的说法:https:...原创 2020-02-26 17:40:02 · 8089 阅读 · 10 评论 -
Deepin/Uos系统更新源失败。提示:E: 仓库 “http://packages.chinauos.cn/uos eagle InRelease” 没有数字签名
起因是在Uos系统上安装g++报错没有这个命令,所以安装g++,结果失败。最后想到更新源,结果还是失败,如图:root@PC:/....../# apt-get update错误:1 http://uos.deepin.cn/uos eagle InRelease 401 Unauthorized [IP: 111.178.3.46 80]正在读取软件包列表... 完成E: 无法...原创 2020-02-26 11:09:52 · 23434 阅读 · 9 评论 -
ubuntu提示系统的网络服务与此版本的网络管理器不兼容。
谷歌上搜到的解决办法:登录root用户操作以下命令jeff@ubuntu:/etc/NetworkManager$ su进入下面的目录root@ubuntu:/etc/NetworkManager# cd /etc/NetworkManager/system-connections/查看下文件目录root@ubuntu:/etc/NetworkManager# ls -la...原创 2020-01-17 15:59:06 · 1258 阅读 · 0 评论 -
Linux进程间通信(IPC)——生成唯一键时IPC_PRIVATE和ftok的比较
在linux中,可以使用IPC对象来进行进程间通信。IPC对象存在于内核中,多进程可以操作同一个IPC对象。每个IPC对象都有一个唯一的编号,该编号是由系统分配的。那么不同的进程如何知道这个编号,进而通过它进行通信呢?下面以共享内存为例,进行分析。方法一:通过ftok函数,产生相同的键值。假设,进程p1创建了共享内存。可以在创建时,调用ftok函数,得到一个key值,调用shmget函...转载 2020-01-11 17:17:31 · 994 阅读 · 0 评论 -
国产Linux:中标麒麟NeoKylin——ldconfig 不是符号连接
在麒麟上配置完/etc/ld.so.conf动态库路径后,执行sudo ldconfig,提示:ldconfig:/opt/remote-viewer/libs/libspice-client-gtk-3.0.so.1不是符号连接ldconfig:/opt/remote-viewer/libs/libspice-client-glib-2.0.so.1不是符号连接ldconfig:...原创 2019-11-22 18:35:05 · 1769 阅读 · 0 评论 -
国产Linux:中标麒麟NeoKylin——虚拟机上安装后装载VM Tools
VM tools顾名思义就是Vmware的一组工具。主要用于虚拟主机显示优化与调整,另外还可以方便虚拟主机与本机的交互,如允许共享文件夹,甚至可以直接从本机向虚拟主机拖放文件、鼠标无缝切换、显示分辨率调整等,十分实用。虚拟机中一般Linux系统安装VM Tools流程:右击虚拟机系统标签,选择“安装VM Tools”,然后在系统桌面会出现一个盘,点开拷贝里面的vmtools-xxx.tar...原创 2019-11-22 18:17:01 · 3561 阅读 · 2 评论 -
中标麒麟NeoKylin终端报错: su:鉴定故障解决
今天体验下国产操作系统-中标麒麟(下载地址:)结果刚装上就出问题,终端进root失败,报错如图但是我命名设置了root密码,sudosuroot就能进去,很奇怪。经查,需要改个密码,原来的密码不可用,那就sudosuroot进入root用户,输入passwd,修改密码:可以看到如果没达到8个字符的话是设置不成功的,之前的问题可能是这个引起的。OK,解决!...原创 2019-11-22 11:10:42 · 5130 阅读 · 1 评论 -
C/C++ 字符串比较——区分大小写和不区分大小写
一、区分大小写一般我们常用的字符串比较函数都是区分大小写的。我们这里只介绍strcmp函数,在windows和linux下函数名和用法都一样。原型:extern int strcmp(const void *s1, const void *s2);功能:用于比较两个字符串并根据比较结果返回整数。用法:基本形式为strcmp(str1,str2),若str1=str2,则返回零;若str...原创 2019-10-28 14:31:35 · 22154 阅读 · 2 评论 -
应用单例启动实现(采用文件锁方式)
应用单例启动(采用文件锁方式)有时候我们的应用程序在系统中可能只允许启动一个(比如服务程序),怎么实现这种需求呢?思想:我们可以采用文件锁的方式,因为通过文件锁,可以保证同一时刻只有一个应用能占得文件资源,获取锁成功的可以执行,如果被其他进程占用时就不能执行。准备:有了思路后,剩下就是怎么操作设置文件锁了。用到网络锁,就不可避免要使用fcntl函数。fcntl函数,调用可以用来对已...原创 2019-10-24 17:44:55 · 472 阅读 · 0 评论 -
Linux:解决应用程序/动态库中与加载的其他动态库的函数 重名问题
Linux:解决应用程序/动态库中与加载的其他动态库的函数 重名问题问题 :今天客户提出来一个大问题,Linux版本的一段程序,显示正常的pdf在识别的时候,程序崩了,这个不应该啊。就算pdf是坏的,那也应该有错误码,而不应该崩掉啊。在复现的过程中,gdb调试发现,在我们的动态库A.so中有个接口叫F_Recg(),我们调用的底层还有个用的别人提供的动态库B.so,其中有个函数也叫F_Re...原创 2019-10-18 17:28:35 · 1632 阅读 · 0 评论 -
Gcc中__attribute__关键字之visibility属性
Gcc中__attribute__关键字之visibility属性 visibility用于设置动态链接库中函数的可见性,将变量或函数设置为hidden,则该符号仅在本so中可见,在其他库中则不可见。 g++在编译时,可用参数-fvisibility指定所有符号的可见性(不加此参数时默认外部可见,参考man g++中-fvisibility部分);若需要对特定函数的可见性进行设...转载 2019-10-18 17:26:05 · 4846 阅读 · 0 评论 -
Linux下链接动态链接库时注意
遇到的问题,记录一下。在centos下编译动态库,测试的时候始终通不过,一直报错,在网上查资料,想起来编译链接动态库时需要设置查询动态库的路径,我设置的是LD_LIBRARY_PATH,命令为export LD_LIBRARY_PATH=$(BIN_DIR):$LD_LIBRARY_PATH//$(BIN_DIR) 替换成你想设置的那个路径这个export是临时设置的,重启终端后...原创 2019-04-17 15:21:02 · 576 阅读 · 0 评论 -
C++封装成Jni库的详细步骤
C++封装成Jni库的详细步骤第一步:配置java环境第二步:实现一个类,包含一些简单操作第三步:编写Add.cpp 封装类Twono中的Add()第四步:将该Add.cpp生成动态连接库第五步:重新编译可能出现的一些问题:前段时间用C++实现了一个数据库连接的类,类中包含了一些连接和断开操作。我想在java中调用这些功能。jni方法提供了只是函数接口的调用而没有类的调用(有关函数接口调用的网上...原创 2019-01-08 11:00:13 · 10655 阅读 · 3 评论 -
玩转Vim编辑器
目录一:VIM快速入门二:Vim文档编辑三:查找替换四:高级功能入门 一:VIM快速入门1.vim模式介绍以下介绍内容来自维基百科Vim从vi演生出来的Vim具有多种模式,这种独特的设计容易使初学者产生混淆。几乎所有的编辑器都会有插入和执行命令两种模式,并且大多数的编辑器使用了与Vim截然不同的方式:命令目录(鼠标或者键盘驱动),组合键(通常通过control键...转载 2018-12-17 10:20:31 · 266 阅读 · 0 评论 -
Linux常用的基本命令
转:http://blog.youkuaiyun.com/xiaoguaihai/article/details/8705992 Linux中许多常用命令是必须掌握的,这里将我学linux入门时学的一些常用的基本命令分享给大家一下,希望可以帮助你们。 这个是我将鸟哥书上的进行了一下整理的,希望不要涉及到版权问题。 1、显示日期的指令: date 2、显示日历的指令:...转载 2018-12-14 20:03:13 · 219 阅读 · 0 评论 -
CentOS-5的yum源无法使用问题
CentOS-5的yum源无法使用问题# yum -y install gccLoaded plugins: fastestmirrorDetermining fastest mirrorsYumRepo Error: All mirror URLs are not using ftp, http[s] or file. Eg. Invalid release/removing m...原创 2018-12-14 17:05:03 · 307 阅读 · 0 评论 -
CentOS中文乱码处理
1、查看当前系统语言 登陆linux系统打开操作终端,输入echo$LANG可以查看当前使用的系统语言。 en_US.UTF-82、查看安装的语言包 查看是否有中文语言包可以在终端输入locale命令, 如有zh cn 表示已经安装了中文语言,我的是 LANG=en_US.UTF-8 LC_CTYPE="en_US.UTF-8" LC_NUMERI...原创 2018-12-14 16:19:02 · 298 阅读 · 0 评论