
Linux基础进阶
Linux基础进阶
Android系统攻城狮
《Android系统多媒体进阶实战》一书作者
展开
-
Linux之一文理解ufs、sd卡、内存卡、flash区别(六十六)
本篇目的:Linux之一文带你ufs、sd卡、内存卡、flash区别UFS是一种用于智能手机、平板电脑等设备中的闪存存储技术,专为高性能和低功耗设计。它的全称是“通用闪存存储”,是继eMMC(嵌入式多媒体卡)之后的新一代闪存技术。SD卡是一种可移动存储设备,广泛应用于数码相机、智能手机、MP3播放器、摄像机等设备。SD卡家族还包括Micro SD卡,它是更小尺寸的版本,主要用于智能手机和平板电脑。原创 2024-09-17 08:45:00 · 1277 阅读 · 0 评论 -
Linux之LLVM、Clang、Clang++区别及用法实例(六十五)
本篇目的:Linux之LLVM、Clang、Clang++区别及用法实例LLVM、Clang和Clang++是三个不同的项目,它们在C++编程语言的编译和优化过程中各自扮演着重要的角色。下面将详细介绍这三者的区别。首先,我们来看LLVM。LLVM(Low-Level Virtual Machine)是一个编译器架构,它提供了一套通用的中间表示(Intermediate Representation,简称IR)以及用于将源代码转换为机器代码的编译器基础设施。原创 2024-05-26 16:29:11 · 1632 阅读 · 0 评论 -
Linux之进程间通信:socket用法实例(六十四)
本篇目的:Linux之进程间通信:socket用法实例Linux Socket编程是一种网络编程的方式,它允许应用程序在网络上发送和接收数据。在Linux系统中,网络通信主要是通过套接字(Socket)实现的。套接字是支持TCP/IP协议的网络通信的端点,可以看作是不同计算机之间进行通信的通道。套接字分为两种类型:字节流套接字(Stream Sockets)和数据报套接字(Datagram Sockets)。字节流套接字主要用于面向流的通信,提供了一种可靠的数据传输方式,典型的应用是TCP协议。原创 2024-05-25 16:26:35 · 1103 阅读 · 0 评论 -
Linux之共享内存mmap用法实例(六十三)
本篇目的:Linux之共享内存mmap用法实例Linux下的mmap是一种内存映射的机制,允许用户空间的应用程序将文件或设备直接映射到内存中。这种机制可以提供高效的大文件读写方式,同时避免了传统文件读写操作的系统调用开销。mmap机制将文件内容映射到进程的地址空间,使得进程可以通过操作内存的方式读写文件,而无需进行文件系统的I/O操作。这对于频繁访问大型文件的应用程序来说,可以显著提高性能,因为它减少了数据在用户空间和内核空间之间的拷贝次数。原创 2024-05-25 16:17:27 · 880 阅读 · 0 评论 -
Linux之IPC通信共享内存(一次拷贝)与消息队列、管道、信号量、socket(两次拷贝)总结(六十二)
本篇目的:理解IPC通信消息队列、管道、socket两次内存拷贝与共享内存一次内存拷贝。在Linux和Android中,进程间通信(IPC)的方式有很多种,包括管道(Pipe)、消息队列(Message Queue)、共享内存(Shared Memory)、信号量(Semaphore)、套接字(Socket)等。其中,管道、消息队列、套接字都需要进行两次内存拷贝,而共享内存只需要一次内存拷贝。原创 2023-11-09 12:17:35 · 731 阅读 · 0 评论 -
Linux之打印函数调用依赖关系(六十一)
本篇目的:理解GCC的-finstrument-functions选项用法GCC编译器的选项用于在函数调用和返回时插入特定的回调函数,以便在程序执行期间进行函数级跟踪和探查。这个特性可以用于调试、性能分析和代码覆盖率测量等方面。当使用这个选项编译程序时,编译器会在函数的入口和出口处插入指定的函数调用,以便监控函数的执行过程。具体来说,当使用选项编译程序时,编译器会在函数的入口处调用函数,以及在函数的出口处调用函数。这样就可以在这两个函数中实现特定的逻辑,例如记录函数的调用信息、执行时间、参数等等。原创 2023-11-08 00:35:31 · 320 阅读 · 0 评论 -
Linux之sched_setscheduler调度策略总结(六十)
本篇目的:理解Linux之sched_setscheduler调度策略用法。在Linux操作系统中,sched_setscheduler函数用于设置进程的调度策略和优先级。它属于调度器(scheduler)相关的函数,可用于控制进程在系统中的调度行为。pid:要设置调度策略的进程的进程ID,如果pid为0,则表示当前进程。policy:调度策略,可以是以下值之一:SCHED_OTHER:普通时间共享调度策略SCHED_FIFO:先进先出调度策略SCHED_RR:轮转调度策略。原创 2023-11-02 23:36:00 · 1574 阅读 · 0 评论 -
Linux之ASCII码表查询tools(五十九)
本篇目的:Linux之ASCII码表查询tools。原创 2023-09-16 20:17:39 · 723 阅读 · 0 评论 -
Linux之常见代码开源协议(五十八)
本篇目的:Linux之常见代码开源协议,简单了解其协议内容。原创 2023-09-15 13:15:29 · 456 阅读 · 0 评论 -
Linux之xdotool模拟鼠标/按键操作(五十七)
xdotool是一款可以模拟鼠标和按键操作强大工具,可以作为自动化工具.原创 2023-05-04 00:14:08 · 2437 阅读 · 0 评论 -
Linux之npm EACCES: permission denied, access /usr/local/lib/node_modules(五十六)
【代码】npm之报错:Error: EACCES: permission denied, access '/usr/local/lib/node_modules'原创 2023-04-10 23:26:43 · 424 阅读 · 0 评论 -
Linux之find忽略搜索3个以上目录(五十五)
搜素android源码排除根目录下的out、prebuilts、frameworks三个目录搜索.c文件。原创 2023-03-11 23:38:25 · 129 阅读 · 0 评论 -
Linux之cargo报错:no override and no default toolchain set(五十四)
【代码】cargo报错:no override and no default toolchain set。原创 2023-02-06 22:39:45 · 828 阅读 · 0 评论 -
Linux之VNote程序员Markdown笔记软件(五十三)
是一款跨平台的开源 Markdown 笔记软件。VNote支持Mac、Linux 和 Windows 都作为主要支持平台,在 Linux 上提供非常优秀的体验。VNote 的目标是做一个带有舒适 Markdown 编辑体验的笔记软件,或者带有强大文件管理功能的 Markdown 编辑器。VNote 借鉴了程序员日常使用的代码编辑器的很多优点,特别是 Vim 的很多优秀思想,尽力成为一款更懂程序员和 Markdown 的笔记软件。VNote 是一款,而不是一款 Markdown 编辑器。原创 2023-02-04 20:15:21 · 2191 阅读 · 0 评论 -
Linux之创建快捷方式(五十二)
【代码】Linux创建快捷方式。原创 2023-02-04 20:07:22 · 198 阅读 · 0 评论 -
Linux之Chromium:pending update of chromium snap(五十一)
Chrome之警告:pending update of chromium snap原创 2023-02-02 22:24:17 · 408 阅读 · 0 评论 -
Linux之后台启动emacs(五十)
【代码】Linux之别名启动emacs。原创 2022-12-29 17:47:08 · 303 阅读 · 1 评论 -
Linux之bash: /proc/sys/net/ipv4/ip_forward: 权限不够
【代码】Linux之bash: /proc/sys/net/ipv4/ip_forward: 权限不够。原创 2022-10-10 21:58:43 · 1589 阅读 · 2 评论 -
ANSI和UNICODE编码区别
国标局最后拍板:一个字节不够,那我们就用多个字节来为汉字编码吧,但是,国情那么穷,字节那么贵,三个字节伤不起,那就用俩字节吧,先给常用的几千汉字编个码,等以后国家强盛了人民富裕了,咱再扩展呗---于是GB2312就产生了。最后,微软苦逼了:顾客就是上帝啊,你们的编码我都得满足啊,这样吧,卖给美国国内的系统默认就用ASCII编码吧,卖给中国人的系统默认就用GBK编码吧,卖给韩国人的系统默认就用EUC-KR编码,...但是为了避免你们误会我卖给你们的系统功能有差异,我就统一把你们的默认编码都显示成ANSI吧。转载 2022-08-20 00:08:43 · 2851 阅读 · 0 评论 -
Linux之strace使用技巧
上述df-h的strace结果是非常多的,从中比较难以找到我们真正关心的调用,通过-etrace参数,通过传入不同的参数值,就可以过滤出想要的结果了。如果一个进程已经在运行,你可以通过它的pid进行追踪,它会显示追踪后这个进程的系统调用。参数,可以得到追踪的每一种系统调用的耗时、次数和失败数。通过传入系统调用的名称,就可以只查看对应的系统调用了。可以显示每一次系统调用的时候的指令指针。可以显示strace的debug信息。参数可以显示系统调用的耗时时间。参数可以显示调用时间。.........转载 2022-07-26 00:33:28 · 861 阅读 · 0 评论 -
Linux之umask fmask dmask掩码使用
umask —— 设置文件夹和文件的权限过滤fmask —— 设置文件的权限过滤dmask —— 设置文件夹的权限过滤转载 2022-07-10 16:38:07 · 1742 阅读 · 0 评论 -
Linux之setenv()/getenv()设置/获取环境变量(四十九)
Linux之setenv()/getenv()设置/获取环境变量原创 2022-07-08 15:51:00 · 1680 阅读 · 0 评论 -
漫画Linux 并发、竞态、互斥锁、自旋锁、信号量
1. 锁的由来?学习linux的时候,肯定会遇到各种和锁相关的知识,有时候自己学好了一点,感觉半桶水的自己已经可以华山论剑了,又突然冒出一个新的知识点,我看到新知识点的时候,有时间也是一脸的懵逼,在大学开始写单片机的跑裸机代码,完全不懂这个锁在操作系统里面是什么鬼,从单片机到嵌入式Linux,还有一个多任务系统,不懂的同学建议百度看看。2. 什么是并发和竞态?在早期的Linux内核中,并发源相对较少。内核不支持对称多处理器(SMP)系统,唯一导致并发问题的原因是中断。随着处理器的C转载 2022-02-12 00:52:20 · 297 阅读 · 0 评论 -
Linux之32/64位int/char/int*/char*与空结构体大小(四十八)
首先,如何查看系统是32位?还是64位?# uname -mx86_64 //表示x86的cpu,是64位的系统注意:看出只有 long,void*,在32位4个字节,在64位8个字节。#include <stdio.h>struct Student{};struct Teacher{ char *name;};int main(){ struct Student tt; //1.struct printf("sizeof(Student.原创 2022-01-22 18:28:51 · 4296 阅读 · 0 评论 -
Linux之journalctl查看系统与kernel日志
1 概述日志管理工具journalctl是centos7上专有的日志管理工具,该工具是从message这个文件里读取信息。Systemd统一管理所有Unit的启动日志。带来的好处就是,可以只用journalctl一个命令,查看所有日志(内核日志和应用日志)。日志的配置文件是/etc/systemd/journald.confjournalctl功能强大,用法非常多。本文将介绍journalctl的相关使用方法。2 journalctl 使用方法.查看所有日志默认情况下,只保存本次..转载 2022-01-21 20:01:31 · 1719 阅读 · 0 评论 -
Linux之strace/ltrace使用(四十七)
1.strace# strace ./test# ps aux | grep test1045# strace -s 500 -p 1045 示例:打印执行ls时跟文件有关的系统调用。# strace -e trace=file ls-e trace=process跟踪涉及过程管理的所有系统调用。这对于观察进程的派生,等待和执行步骤很有用。-e trace=network跟踪所有与网络相关的系统调用。-e trace=signal跟踪所有与信号相关的系统调用。原创 2022-01-20 15:23:10 · 624 阅读 · 0 评论 -
Linux之查看文件被哪个进程占用fuser/lsof/pidof(四十六)
【代码】Linux之查看文件被哪个进程占用fuser/lsof/pidof(四十六)原创 2022-01-20 15:04:20 · 21289 阅读 · 1 评论 -
Linux之MeeGo、Ubuntu Touch、Sailfish、Tizen系统历史关系(四十五)
MeeGo历史Sailfish OS由Jolla公司进行开发,兼容Android应用,主要是面向移动设备如智能手机以及平板电脑等产品。由于Jolla公司的核心成员主要来自原MeeGo开发团队,因此Sailfish OS被认为是MeeGo的后继者,而Meego又是Intel、诺基亚合作开发的移动系统,但早已被诺基亚放弃,Intel和三星又在此基础上合作了Tizen系统。2012年底Jolla公司正式发布Sailfish OS,2013年底和2014年底则分别推出基于Sailfish OS的智能手机和平原创 2022-01-11 17:00:17 · 3053 阅读 · 0 评论 -
Linux中各种锁原理概述
在linux内核中,有很多同步机制。比较经典的有原子操作、spin_lock(忙等待的锁)、mutex(互斥锁)、semaphore(信号量)等。并且它们几乎都有对应的rw_XXX(读写锁),以便在能够区分读与写的情况下,让读操作相互不互斥(读写、写写依然互斥)。而seqlock和rcu应该可以不算在经典之列,它们是两种比较有意思的同步机制。1.atomic(原子操作):所谓原子操作,就是该操作绝不会在执行完毕前被任何其他任务或事件打断,也就说,它的最小的执行单位,不可能有比它更小的执行单位,因转载 2021-12-18 19:26:29 · 750 阅读 · 0 评论 -
Linux之查看标准错误码工具(四十四)
# sudo apt install moreutils# errno -lEPERM 1 不允许的操作ENOENT 2 没有那个文件或目录ESRCH 3 没有那个进程EINTR 4 被中断的系统调用EIO 5 输入/输出错误ENXIO 6 没有那个设备或地址E2BIG 7 参数列表过长ENOEXEC 8 可执行文件格式错误EBADF 9 错误的文件描述符ECHILD 10 没有子进程EAGAIN 11 资源暂时不可用ENOMEM 12 无法分配内存EACCES 13 权限不.原创 2021-11-25 21:43:23 · 1167 阅读 · 0 评论 -
Linux之本地socket demo(四十三)
1.server.c//server#include <stdio.h>#include <sys/socket.h>#include <sys/types.h>#include <sys/un.h>#include <stdlib.h>#include <unistd.h>#include <sys/select.h>#include <sys/time.h>#define UNIX_DO.原创 2021-10-22 16:13:01 · 484 阅读 · 0 评论 -
Linux之pipe用法(四十二)
#include <stdlib.h>#include <stdio.h>#include <string.h>#include <unistd.h>int main(void){ int fd[2]; int ret; char writebuf[64]; char readbuf[64]; ret = pipe(fd); if(ret != 0) { printf("create pipe failed!\n"); ret.原创 2021-10-20 20:19:03 · 888 阅读 · 0 评论 -
Linux之fd与dup2复制fd用法
文件描述符fd通过对 open 函数的理解,可见文件描述符是一个小整数执行以下代码,看看你能发现什么: #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> int main转载 2021-10-20 17:42:29 · 1071 阅读 · 0 评论 -
解决:无法添加符号: DSO missing from command line
1.编译pulseaudio报错:/usr/bin/ld: /tmp/ccIkVVbs.o: undefined reference to symbol 'pa_log_level_meta'/usr/local/lib/libpulsecommon-14.99.so: 无法添加符号: DSO missing from command linecollect2: error: ld returned 1 exit status2.解决:# gcc playback.c -lpulse -lp.原创 2021-09-24 18:58:22 · 2508 阅读 · 0 评论 -
Linux之文件浏览工具nautilus
# nautilus .原创 2021-06-01 16:19:28 · 544 阅读 · 0 评论 -
彻底搞懂epoll高效运行的原理
前言这篇文章读不懂的没关系,可以先收藏一下。笔者准备介绍完epoll和NIO等知识点,然后写一篇Java网络IO模型的介绍,这样可以使Java网络IO的知识体系更加地完整和严谨。初学者也可以等看完IO模型介绍的博客之后,再回头看这些博客,会更加有收获。如果你顺利啃下这篇博客,恭喜你,nginx、redis和NIO等核心思想已经被你掌握了,可以顺势去拓展自己的理解。否则,只是孤立的看epoll,时间一长会很快忘记的。当然,这些核心思想,笔者也会在之后的博客慢慢做详细讲解,欢迎关注概念初探epo转载 2021-04-01 15:16:24 · 486 阅读 · 0 评论 -
Linux之ARM平台交叉编译valgrind(四十一)
0.下载valgrind源码# wget http://valgrind.org/downloads/valgrind-3.12.0.tar.bz21.交叉编译valgrind# autogen.sh/usr/local为链接so和头文件位置# ./configure --prefix=/usr/local# make -j32//注意,一定要使用绝对路径,否则不生效# make DESTDIR=/home/bin installOr# make install DESTDIR=.原创 2020-11-29 18:15:52 · 782 阅读 · 0 评论 -
Linux之printf占位符(四十)
* %a:浮点数、十六进制数字和p-记数法(C99)* %A:浮点数、十六进制数字和p-记法(C99)* %c:一个字符char* %C:一个ISO宽字符* %d:有符号十进制整数int* %ld,%Ld:长整型数据long* %hd:短整型数据* %e:浮点数、e-记数法* %E:浮点数、E-记数法* %f:单精度浮点数(默认float),十进制记数法* %.nf:这里n表示精确到小数位后n位,十进制记数法* %g:根据数值不同自动选择%f或%e* %G:根据数值不同自动选择%f.原创 2020-08-11 16:57:28 · 1682 阅读 · 0 评论 -
Linux之RPM中SPEC宏定义对应路径(三十九)
# rpm --showrc //查看实现代码。# rpm --eval "%{_libdir}" //查看具体对应路径。/usr/lib/usr/lib/rpm/macros //所有宏定义Macros mimicking autoconf variables%{_sysconfdir} /etc%{_prefix} /usr%{_exec_prefix} %{_prefix}%{_bindir} %{_exe...翻译 2020-07-14 13:43:09 · 2668 阅读 · 0 评论 -
RPM实用命令
RPM包相关工具RPM包相关工具有rpm,rpmbuild,rpmsign,rpm2cpio等。rpm命令# rpm -ihv name.rpm# rpm -ql name.rpm# rpm -qf /etc/keepalived/keepalived.conf# rpm -qa# rpm -qa php# rpm -qa php*# rpm --showrc # 查看所有RPM预设值# rpm -E %configure # 查看RPM flag的值# rpm -E %_li转载 2020-07-14 11:32:36 · 972 阅读 · 1 评论