Linux基础(一)
文章平均质量分 85
丁金金_chihiro_修行
be better boy man
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
FreeType 字体信息检查工具 - 现代C++实现
本文介绍了一个基于FreeType库开发的现代C++字体信息检查工具。该工具采用RAII机制管理资源,使用智能指针和枚举类增强安全性,通过结构化异常处理提高可靠性。主要功能包括:读取字体基本信息(家族名称、样式等)、解析SFNT名称表提取版权信息、检查字体嵌入权限(安装、预览、编辑等限制)。该工具支持跨平台(Unicode/Macintosh/Microsoft)的字符串解码,能处理多种编码格式,为字体版权信息检查和授权分析提供了便捷的技术方案。原创 2025-06-04 22:36:08 · 583 阅读 · 0 评论 -
Linux Shell 切换
Linux系统中Shell管理摘要: Shell切换: 临时切换:输入bash启动新会话,exit返回原Shell 永久切换:使用chsh -s /bin/bash修改默认Shell Shell查看: 查看系统支持的Shell:cat /etc/shells 查看当前Shell:echo $0或echo $SHELL 查看用户关联Shell:grep "^$USER" /etc/passwd Shell添加: 先安装目标Shell(如apt/dnf install zsh) 将路径添加到原创 2025-05-27 20:47:40 · 1561 阅读 · 0 评论 -
Linux字体遍历 获取支持的unicode范围
该代码通过结合两个功能模块,实现了将系统字体信息输出到文本文件的功能。主要改进包括:将输出重定向到文件 "font_info.txt",合并了字体属性和Unicode范围的输出,添加了文件头信息和分隔线以提高可读性,并以十六进制格式输出Unicode范围。代码还增加了错误处理,确保文件能正常打开和关闭,并在程序结束时显示完成信息。输出文件包含每个字体的所有属性信息及其支持的Unicode字符范围,每个字体之间用分隔线隔开,便于阅读。原创 2025-05-13 12:06:11 · 299 阅读 · 0 评论 -
如何固定linux 内核 如何修改Linux内核
在 Linux 系统中,固定(锁定)内核版本可以防止系统在更新时自动升级到新内核,从而保持系统稳定性。apt-mark适用于 Debian/Ubuntu 系统,使用apt-mark或Ctrl + XYEnteryum/dnf或(Fedora/CentOS 8+)或或推荐使用或,因为它们不会影响其他软件更新,仅锁定内核版本。如果只是想防止自动升级,方法 1 或 方法 2 是最安全的选择。原创 2025-05-07 10:12:34 · 1864 阅读 · 0 评论 -
FontConfig 关于字体属性
【代码】FontConfig关于字体属性。原创 2025-01-17 20:38:24 · 369 阅读 · 0 评论 -
16.扩展属性
扩展属性(EA)可以用于实现访问控制列表(ACLs)、文件能力等功能。此外,它们还可以记录文件的版本号、MIME类型、字符集信息或指向图标资源的指针等。命名空间:EA被划分为不同的命名空间,包括usertrustedsystem和security。每个命名空间有不同的用途和权限要求。user:非特权用户可以在权限允许的情况下读取和修改这些属性。trusted:需要特权进程才能修改。system:主要用于内核级别的操作,例如ACLs。security。原创 2025-01-13 01:35:17 · 530 阅读 · 0 评论 -
15.文件属性
和 futimens()提供了更高精度和更灵活的方式来设置文件的时间戳。这些函数允许独立设置访问时间和修改时间,并且支持纳秒级精度。可以使用特殊值UTIME_NOW和UTIME_OMIT来简化时间戳的设置操作。支持符号链接的直接操作,而futimens()则适用于通过文件描述符打开的文件。通过这些高级接口,开发者能够更精细地控制文件的时间戳,满足各种应用需求。新建文件的UID总是取自进程的有效用户ID。新建文件的GID取决于文件系统的挂载选项和父目录的设置。使用chown()原创 2025-01-13 01:33:10 · 448 阅读 · 0 评论 -
14.系统编程概念
定义:文件系统是对文件和目录的组织集合。内容:本章将解释与文件系统相关的概念,并以传统的Linux ext2文件系统为例进行说明。同时,会简要介绍Linux支持的日志文件系统。系统调用:讨论用于挂载(mount)和卸载(unmount)文件系统的系统调用,以及获取已挂载文件系统信息的库函数。本章介绍了文件系统和设备专用文件的基本概念,重点讨论了设备文件的类型、设备驱动程序的作用以及Linux中设备管理的演进。通过udev和sysfs。原创 2025-01-13 01:16:05 · 698 阅读 · 0 评论 -
13. 文件IO缓冲
stdio库通过缓冲机制减少了系统调用次数,提高了 I/O 性能。使用setvbuf()可以设置流的缓冲模式(无缓冲、行缓冲、全缓冲)。fflush()用于强制刷新输出流的缓冲区。在编写可移植代码时,应注意不同 C 库的行为差异,并显式调用fflush()以确保正确性。fsync()和:用于强制刷新文件数据和元数据到磁盘。O_SYNC标志:使所有写操作同步执行,但会显著降低性能。O_DSYNC和O_RSYNC标志:提供了更细粒度的同步控制。性能优化使用大缓冲区减少系统调用次数。原创 2025-01-13 01:03:27 · 1197 阅读 · 0 评论 -
12.Linux 进程信息
proc文件系统提供了一种简单的方式来访问内核和进程的信息。每个进程在/proc中都有一个以 PID 命名的目录,包含进程的详细信息(如statuscmdlinefd等)。线程组中的每个线程在目录下都有一个以 TID 命名的子目录。/proc文件系统的内容会随着内核版本的演进而变化,因此解析时应谨慎处理。/proc文件系统提供了对内核和系统信息的访问。可以通过 Shell 命令或编程语言(如 C、Python)读取和修改/proc文件。/proc/PID。原创 2025-01-13 00:53:25 · 848 阅读 · 0 评论 -
11 Linux 系统限制和选项
编译时:通过包含标准头文件(如)获取固定的限制值。运行时:通过调用SUSv3定义的函数(如sysconf()pathconf()和)获取可能变化的限制和选项。SUSv3为开发者提供了一套标准化的接口和规定,帮助处理不同系统之间的差异,从而确保应用程序在不同UNIX实现上的可移植性和正确性。SUSv3通过定义最小限制值和提供标准化接口(如sysconf()pathconf()和),帮助开发者编写可移植的应用程序。原创 2025-01-13 00:46:10 · 1367 阅读 · 0 评论 -
10.Linux 时间
这段文字主要讨论了计算机程序中涉及的两种时间类型:真实时间和进程时间,并详细介绍了日历时间的概念及其在UNIX系统中的表示方式。真实时间:进程时间:进程使用的CPU时间总量,用于性能检查和优化。硬件时钟:计算机体系结构内置的时钟,帮助内核计算真实时间和进程时间。日历时间的表示:总结:程序关注真实时间和进程时间,UNIX系统使用Epoch以来的秒数表示日历时间,32位系统存在2038年问题,64位系统可以解决这一问题。用于获取日历时间,精度可达微秒。函数原型:返回值:成功返回0,失败返回-1。参数:原创 2025-01-13 00:45:25 · 981 阅读 · 0 评论 -
9.LINUX 进程凭证
实际用户 ID 和实际组 ID:RUID 和 RGID 确定了进程的真实身份,用于审计和日志记录。它们在进程创建时从父进程继承,并且通常不会更改。有效用户 ID 和有效组 ID:EUID 和 EGID 是用于权限检查的主要标识符。它们决定了进程在执行各种操作时的权限。EUID 和 EGID 可以通过 SUID 和 SGID 程序或系统调用动态更改。保存的 set-user-ID 和保存的 set-group-ID。原创 2025-01-06 00:15:23 · 688 阅读 · 0 评论 -
8. LINUX 用户和组
存储用户账户的基本信息,包括登录名、用户 ID、组 ID、主目录和登录 Shell 等。Shadow 密码机制:为了提高安全性,加密后的密码通常存储在文件中,而不是直接存储在中。网络环境:在分布式系统中,密码信息可以通过 NIS 或 LDAP 进行分发,保持对应用程序的透明性。通过理解文件的结构和功能,系统管理员可以更好地管理和维护用户账户,确保系统的安全性和稳定性。:存储用户的加密密码和其他与安全性相关的字段,只有超级用户可以读取。它提高了系统的安全性,防止密码被轻易破解。原创 2025-01-05 23:50:50 · 1147 阅读 · 0 评论 -
Linux 基础七 内存
malloc()和free()是 C 语言中常用的动态内存分配和释放函数,提供了比brk()和sbrk()更高级、更灵活的接口。malloc()分配的内存块会被对齐,以便高效访问各种数据结构。free()通常不会立即减少,而是将释放的内存块添加到空闲列表中,供后续的malloc()调用重用。只有当释放的内存块位于堆的顶部且足够大时,free()才会调用sbrk()来降低。通过合理的内存管理和释放策略,malloc()和free()可以有效地减少内存碎片,提高内存利用率。malloc()和。原创 2025-01-05 23:38:37 · 992 阅读 · 0 评论 -
Linux 基础 6.进程
clearenv():清除整个环境变量列表,将environ设置为NULL。putenv():添加或修改环境变量。它接受一个name=value形式的字符串,并将其直接添加到环境中。注意,putenv()不会复制字符串,因此不应使用自动变量作为参数。setenv():添加或修改环境变量。它为name=value形式的字符串分配新的内存,并将name和value复制到该内存中。可以安全地使用自动变量作为参数。unsetenv():移除指定的环境变量。如果该变量不存在,unsetenv()也不会报错。原创 2025-01-05 20:32:33 · 1261 阅读 · 0 评论 -
5.深入文件IO
i-node 是 Linux/UNIX 文件系统的核心组成部分,它通过分离文件内容和元数据、支持硬链接、提供高效的文件查找和访问机制、记录文件的访问权限和时间戳、支持文件锁定和并发控制、实现稀疏文件、支持大文件和高效的磁盘空间管理等方式,极大地提升了文件系统的灵活性、效率和可靠性。i-node 的存在使得文件系统能够更好地管理文件资源,满足现代操作系统的需求。可以在编译时通过命令行选项定义64// 其他头文件。原创 2025-01-05 20:31:38 · 783 阅读 · 0 评论 -
Linux 基础 4.文件IO 通用的IO模型
在 Linux 和其他类 Unix 操作系统中,文件描述符(file descriptor)是操作系统内核用来标识打开文件的非负整数。它们用于表示所有类型的已打开文件,包括普通文件、管道(pipe)、FIFO、套接字(socket)、终端和设备等。每个进程都有自己独立的一组文件描述符,这意味着不同进程之间的文件描述符不会相互影响。UNIX I/O模型的通用性极大地简化了应用程序的开发,使得开发者无需关心底层的具体细节,只需专注于业务逻辑。同时,当需要访问特定设备或文件系统的高级功能时,ioctl()原创 2025-01-05 20:29:25 · 1499 阅读 · 0 评论
分享