linux
文章平均质量分 51
程序员小吕666
程序员,永远学习
展开
-
函数 prctl 系统调用
是一个系统调用,用于控制和修改进程的行为和属性。它可以在Linux系统上使用,提供了各种功能和选项来管理进程的不同方面。每个选项都有特定的参数,可以根据需要传递。具体的参数和行为取决于所选的选项。函数将当前进程的名称设置为"MyProcess"。函数时,应该查阅相关文档并了解所使用的操作系统的支持和限制。函数的具体行为和可用选项可能因操作系统和版本而异。选项和参数,用于执行不同的操作。函数获取进程的名称,并将其打印到标准输出。以下是一个简单的示例,展示了如何使用。这些仅是一些常用的选项,原创 2023-05-23 10:15:17 · 2669 阅读 · 0 评论 -
linux信号
linux信号信号简述信号类型:信号的生命周期信号注册信号安装参考文章(ctrl C V 出处):信号简述信号是进程间通信机制中唯一的异步通信机制, 是在软件层次(包括操作系统)上对中断机制的一种模拟 .信号类型:SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILLSIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPESIGKILL 10) SIGUSR1 11) S原创 2021-09-24 18:02:10 · 103 阅读 · 0 评论 -
Linux下使用backtrace开发崩溃日志输出库
1.通过虚拟地址结算地址偏移。接到崩溃信号后,打印处程序的 map数据。然后用崩溃处的函数地址 - 起始地址 = 偏移地址。2.通过 函数名 + 偏移的方式计算函数明后边会有个 + 0x666. 所以 函数的相对地址 + 函数内的偏移位置 = 问题发生的偏移地址。获取相对地址:ELF格式里。Section区域有个. text 区域,此区域包含了程序可执行的指令。使用 objdump 可将指令进行反汇编。其中就包含了偏移地址。objdump -S XXX.so | grep “函数名” 会得原创 2021-09-18 16:42:17 · 962 阅读 · 0 评论 -
syscall(SyS_gettid)
在linux下每一个进程都一个进程id,类型pid_t,可以由getpid()获取。POSIX线程也有线程id,类型pthread_t,可以由pthread_self()获取,线程id由线程库维护。但是各个进程独立,所以会有不同进程中线程号相同节的情况。那么这样就会存在一个问题,我的进程p1中的线程pt1要与进程p2中的线程pt2通信怎么办,进程id不可以,线程id又可能重复,所以这里会有一个真实的线程id唯一标识,tid。glibc没有实现gettid的函数,所以我们可以通过linux下的系统调用sysc转载 2021-09-17 16:11:45 · 355 阅读 · 0 评论 -
linux信号
linux信号各种信号kill 与 kill -9各种信号1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR213) SIGPIPE 14) SIGALRM 15) SIGTERM原创 2021-09-17 14:48:59 · 1186 阅读 · 0 评论 -
从内核调度算法的层面进行线程设计
按需求设计特殊线程线程是如何运行的什么决定线程的运行的顺序实时进程SCHED_FIFO:SCHED_RR:普通进程CFS:小结代码展示线程在线程中更改调度算法线程是如何运行的线程是内核调度的最小单元,每一个线程创建都会在内核实例出一个thread_info结构体,结构体中有一个task_struct结构体。这两个结构体描述着线程的信息。当中断触发调度时,schedule函数开始在几种不同类型的线程之间进行调度选择,在相同类型的线程之间进行调度算法选择。task_struct中描述着线程的类型,和调度方法原创 2020-12-25 16:55:06 · 117 阅读 · 2 评论 -
进程调度与调度器及算法
学无止境调度器详细解释内核V2.6.23之前调度算法内核V2.6.23之后CFS调度算法在内核 V2.6.23 后linux也能抢占进程的优先级调度器详细解释https://www.ibm.com/developerworks/cn/linux/l-cn-scheduler/index.html内核V2.6.23之前调度算法linux内核的三种 调度策略 :SCHED_OTHER 分时调度策略,(默认的)SCHED_FIFO实时调度策略,先到先服务SCHED_RR实时调度策略,时间片轮转原创 2020-12-23 18:46:24 · 455 阅读 · 0 评论 -
进程的执行状态与线程时间片的分配
学无止境环境线程的时间片分配线程的执行进程的状态三个状态状态的迁移环境无特殊指明,本文基于linux线程的时间片分配对linux系统来说,用户创建进程后,CPU分配时间片的单位其实是按线程分的。假如你的程序里没有创建线程,你可以把它看成是一个单线程程序,Linux内核其实不区分进程和线程,内核把执行单元叫做任务(task)。线程则是最小的工作单元。对于有子进程的程序来说,当该进程刚被其父进程fork出来时,是平分其父进程的剩余时间片的。这个时间片执行完后,就会根据它的初始优先级来重新分配时间片l原创 2020-12-21 20:42:52 · 5365 阅读 · 0 评论 -
Dbus收发消息使用脚本开机自启后不好用
dbus与linux用户环境变量开发时遇到过这样一个问题,写的两个程序之间能够好好的利用dbus通信。写个自启脚本开机自动拉起它俩时就无法通信了。环境变量写过dbus的都知道,跑程序的时候都要先设置dbus的服务变量DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/0/bus这个时候要注意,/run/user/ 的目录是为不同用户存在的像我这里就分为 0 和 1000两个目录,其中1000就是普通用户的路径,而0则是root用户的路径。当你把原来原创 2020-12-02 14:07:11 · 676 阅读 · 0 评论 -
arm-linux-gcc交叉编译的时候找不到.h头文件
自己动手研发项目什么都得自己做原因解决方案第一次遇见这个问题的时候是自己开发一个物联网demo时交叉编译怎么都过不去。当时面向百度编程好几天才解决问题,今日得空整理技术。将此问题好好写一下。原因交叉编译的时候头文件默认搜索路径与正常编译有所不同解决方案在这里我默认你们在虚拟机上安装完了交叉编译工具链了啊,要不然也不能遇见这个问题。找到交叉编译链安到哪个目录了在命令行敲入:echo ‘main(){}’ | /opt/gcc-arm-linux-gnueabihf-8.3.0/bin/ar原创 2020-12-02 12:31:51 · 9791 阅读 · 5 评论