
2.2 linux应用
文章平均质量分 70
2.2 linux应用
hyh-hz
书是越读越薄的
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
1 Studying《Unix环境高级编程》
启用进程会计选项后,当进程结束后内核会写一个会计记录。会计记录一般包括命令名,使用的CPU时间总量,用户ID,组ID和启动时间等。root用户可以执行accton命令来启用会计处理。会计记录邪道指定的文件中,linux中该文件是/var/account/pacct。原创 2025-06-07 13:21:04 · 905 阅读 · 0 评论 -
2 网络编程中read使用错误引起的崩溃
网络编程中,基础接口read的使用要格外注意,先上有问题的代码:int socketTCP::readn(char *buf,size_t len){ int ret = 0; size_t left = len; while(left>0){ ret = ::read(sock_,buf,len); if(ret<0){ return -1; } if(ret==0){原创 2020-08-16 16:36:44 · 976 阅读 · 0 评论 -
3 udev介绍
1 什么是udevudev是一种工具,它能够根据系统中的硬件设备的状态动态更新设备文件,包括设备文件的创建,删除等。设备文件通常放在/dev目录下。使用udev后,在/dev目录下就只包含系统中真正存在的设备。设备访问控制udev:user dev静态文件(早期)-->devfs(2.3.46 内核空间)-->udev(2.6.13 用户空间,依赖于linux-2.6的sysfs文件系统)。udev会根据/etc/udev/udev.conf文件中的udev_rules指定的转载 2021-04-24 21:46:48 · 3241 阅读 · 0 评论 -
4 金步国udev
系统规则目录(/usr/lib/udev/rules.d)、 运行时规则目录(/run/udev/rules.d)、 本机规则目录(/etc/udev/rules.d)。如果系统管理员想要屏蔽 /usr/lib/ 目录中的某个规则文件, 那么最佳做法是在 /etc/ 目录中创建一个指向 /dev/null 的同名符号链接, 即可彻底屏蔽 /usr/lib/ 目录中的同名文件。具体说来就是: /etc/ 的优先级最高、 /run/ 的优先级居中、 /usr/lib/ 的优先级最低。转载 2021-04-24 21:48:33 · 1073 阅读 · 0 评论 -
5 systemd介绍
每一个套接字配置单元都有一个相应的服务配置单元。systemd可在Service还没启动好的时候建议一个socket,用来接收所有Client的请求和数据,并缓存.一旦Service启动完成,再替换缓存和socket.如果服务A需要使用服务B的D-Bus服务,而服务B并没有启动.D-Bus可以在服务A请求服务B的D-Bus服务时自动启动服务B,然后服务A再启动.systemd集成了autofs的实现,对于系统中的挂载点如/home,当系统启动时,systemd创建临时的自动挂载点.转载 2021-04-12 22:31:33 · 5104 阅读 · 0 评论 -
6 systemd-analyze和systemctl常用方法
Systemd分析工具使用摘要 systemd-analyze是分析系统启动性能的核心工具,主要功能包括:1)分析系统启动时间(内核/用户态);2)显示各服务启动耗时(blame);3)以树状图展示关键启动链(critical-chain);4)生成启动时序SVG图表(plot);5)绘制服务依赖关系图(dot命令配合GraphViz)。重点命令还包括unit-paths查看单元目录。配套工具systemctl用于服务管理,包括查看服务状态(status)、启停服务(enable/disable)及列出依赖原创 2021-04-18 23:05:50 · 3474 阅读 · 4 评论 -
7 initrd阶段加打印和打断点调试步骤
摘要:Linux initrd.img 调试与修改方法 本文介绍了修改和调试Linux initrd.img文件的具体步骤:1)解压initrd.img到指定目录;2)编辑init脚本,通过/dev/kmsg添加调试信息;3)重新压缩并替换原文件;4)重启后通过dmesg查看输出。还说明了如何在启动时设置断点(top/modules/premount/mount/mountroot),以及通过Grub修改启动参数进行调试的方法。最后提供了更新initrd.img的标准流程,包括修改/usr/share/in原创 2021-04-14 23:06:47 · 634 阅读 · 0 评论 -
8 linux根据xxx.so下载xxx源码,编译和安装
本文介绍了在Linux系统下根据动态库文件(.so)下载并编译安装对应源代码的方法,以SDL2和X11为例。主要步骤包括:1)通过查找.so文件确定对应软件包名;2)配置源码源并下载源代码包;3)安装编译依赖环境后执行编译;4)安装生成的.deb包。特别指出,默认编译生成的是非调试版本,如需调试版本需手动配置编译选项并安装到系统目录。该方法也适用于其他库的源码编译安装,但需注意X11相关库的替换可能导致显示异常。原创 2021-04-11 15:51:20 · 1914 阅读 · 0 评论 -
9 linux利用alsa loopback录制应用声音
Linux系统ALSA音频录制教程:通过snd-aloop模块实现声音内录。步骤包括:1)加载loopback模块;2)设置音频输出为模拟Loopback;3)增大音量;4)播放测试音源;5)使用arecord命令录制20秒音频;6)用aplay播放测试录音。文档提供了详细命令参数说明和相关技术参考链接,适用于需要系统内录或音频测试的Linux用户。原创 2021-07-28 11:34:03 · 3606 阅读 · 1 评论 -
10 获取网卡名称和网卡MAC地址
test.h#ifndef TEST_H#define TEST_H#include <map>#include <string>class MacAddress {public: int GetMacNameAddress(std::map<std::string, std::string>& mac);private: void GetMacName(); int GetMacAddress(std::strin原创 2021-09-07 11:23:50 · 983 阅读 · 0 评论 -
11 信号处理函数中的死锁
本文总结了因为信号处理函数里调用不当,导致程序死锁卡住的情况。1 理论支撑信号处理类似中断,当进程捕获到信号(如SIGTERM)后,进程会停止当前的操作区执行信号处理函数,如果中断处理中调用了信号不安全函数,就可能有死锁风险。以Logger类的print函数为例,如果Logger类的实现使用了线程锁:void print(){ lock ...... unlock}如果进程运行时线程1运行了这个print函数,持有了锁,但是还没释放锁。这时信号(如SIGT原创 2021-06-25 13:15:01 · 1348 阅读 · 0 评论 -
12 系统调用与库函数的区别
Linux应用程序通常通过库函数间接调用系统调用,但也可以直接使用系统调用接口。例如C程序中直接用open()、read()、close()等系统调用来操作文件。不过实际上,这些系统调用在编译时仍会被链接到标准库(libc)的封装函数,并非完全绕过库函数。库函数封装提供了更好的抽象层和错误处理,增强了可移植性。虽然代码层面看似直接调用系统调用,但执行时仍通过标准库间接完成,兼顾了灵活性和安全性。一般建议优先使用标准库函数进行操作。原创 2023-12-09 18:27:32 · 458 阅读 · 0 评论