UNIX环境高级编程
monkey_llll
这个作者很懒,什么都没留下…
展开
-
C和C++实现互调的方法
C++支持函数重载,所以在编译的时候,函数名会发生变化。C语言不存在这个问题。那么在调用的时候,C++找的是变化后的函数名,而C语言找的是原始的函数名。所以两者不能直接调用。原创 2024-08-21 13:43:35 · 445 阅读 · 0 评论 -
Linux 时区的配置
Linux 时区的配置原创 2023-03-29 20:52:34 · 331 阅读 · 0 评论 -
Linux 解析长/短选项参数 getopt_long
Linux 解析长/短选项参数 getopt_long原创 2023-03-28 20:28:41 · 416 阅读 · 0 评论 -
contain_of的原理与实现
contain_of原理介绍与实现原创 2023-02-16 23:01:16 · 1285 阅读 · 0 评论 -
Linux C 创建多级目录
mkdir函数接口不能同时创建多级目录。因此上面的函数会进行递归创建。原创 2023-01-11 21:06:10 · 2705 阅读 · 0 评论 -
system获取命令的返回值
通过system执行命令,获取命令的返回值。原创 2022-12-02 22:39:40 · 2342 阅读 · 0 评论 -
C语言使用xml2库解析xml文件
c语言通过xml2库解析xml文件。原创 2022-10-31 09:20:28 · 2070 阅读 · 0 评论 -
Linux 打印栈调用信息
在Linux系统上,应用程序打印堆栈信息。原创 2022-07-12 18:16:44 · 1680 阅读 · 0 评论 -
Linux查看分区label信息
知道分区的label信息,怎么查找到对应的是哪一个设备文件,以userdata分区为例:执行如下命令:/sbin/blkid | grep "userdata" | awk -F'[":"%]+' '{print($1)}'命令输出:Linux的分区label查看方式如下:执行命令:/sbin/blkid输出如下:/dev/sde50: PARTLABEL="multiimgoem" PARTUUID="8c92ee74-0b82-1c43-7c7a-3c2d64f原创 2022-05-10 16:41:18 · 1911 阅读 · 0 评论 -
Linux 查看动态库里面有哪些接口
今天,提供了一个操作底层的动态库给到应用层的同事,应用层的同事反馈找不到接口。因为这个库在协作开发过程中,有点曲折。所以第一时间搞得我也有点不自信了,就先排查了一下是否是自己的问题。排查方式如下:nm libtest.so通过上述命令查看,发现需要的接口已经在库里面实现了。结果如下图:相关符号说明:A Global absolute 符号。a Local absolute 符号。B Global bss 符号。b Local bss 符号。D .原创 2022-04-26 18:31:15 · 3772 阅读 · 0 评论 -
gdb调试应用程序记录
gdb 调试说明:判断程序是否为debug版本: 方法一: 命令:gdb a.out //注:这里的命令是指在Linux终端下面输入的命令 非debug版本,会提示:Reading symbols from a.out...(no debugging symbols found)...done. debug版本,会提示:Reading symbols from a.out...done.方法二: 命令:readelf -S binfi......原创 2022-04-20 13:43:00 · 1193 阅读 · 0 评论 -
在库里面实现注册函数回调
因为工作需要,需要做一个升级库,app调用升级库的接口,完成升级。大部分情况下,app需要实时知晓升级的进度。那么获取升级进度有2种方式:1、app主动掉库提供的升级进度接口。2、app向库里面注册一个回调函数,库实时调用回调函数来更新。所谓的在库里面注册回调函数,其实就是app告诉库对应函数的函数指针,库拿到函数指针后,就可以调用对应的函数了。代码结构如下:.├── func.c├── func.h├── main.c└── make.sh代码如下:库代码:func...原创 2022-04-12 20:12:19 · 759 阅读 · 0 评论 -
Linux进程间通过文件锁的方式实现互斥
最近因为工作需要,需要提供一个升级库给到其他同事进行调用,因为是升级功能,所以在同一时刻,只能确保一个进程处于正常的升级状态。因此就需要实现进程间的互斥。实现方案:在库接口里面,通过文件锁的方式,来确保只有一个进程可以走正常的流程。贴一下测试demo#include <stdio.h>#include <sys/types.h>#include <unistd.h>#include <fcntl.h>int ab_update_lock原创 2022-04-12 15:05:25 · 569 阅读 · 0 评论 -
Linux 获取系统时间
很多时候,都需要获取Linux的系统时间,每次都是在网上去抄别人的,用完之后就往了。这次做个记录,方便自己以后查阅。直接上代码:#include <stdio.h>#include <stdlib.h>#include <sys/time.h>#include <time.h>/* * 获取系统时间,这种方式获取得到的格式是: Wed Mar 30 20:41:21 2022 */int printf_time(void){原创 2022-03-30 20:44:24 · 8596 阅读 · 0 评论 -
标准IO fgets的使用
因为工作的需要,需要按行读取文件内容。所以偷懒直接使用了fgets来使用。使用过程中,发现fgets在读取行内容的过程中,会将末尾的换行符 '\n'也读进来。测试代码如下:#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <fcntl.h>#include <string.h>int main(int argc, char *argv[])原创 2022-03-02 10:49:14 · 362 阅读 · 0 评论 -
文件/目录 查看文件的文件类型
在程序代码里面,可以通过lstat、fstat、stat函数来查看文件的属性。文件的属性用 struct stat结构体来表示:struct stat { mode_t st_mode; //文件对应的模式,文件,目录等 ino_t st_ino; //inode节点号 dev_t s...原创 2022-03-02 10:40:55 · 285 阅读 · 0 评论 -
alloca 函数
alloca 函数是一个内存分配函数,与malloc、calloc、realloc类似,但是注意一个重要的区别:alloca 是在栈(stack)上申请空间的,并且用完马上就释放。原创 2022-02-09 16:48:15 · 1012 阅读 · 0 评论 -
查找文件被哪些进程打开
先上脚本:#!/bin/sh#example#Find which process /dev/dri/card0 is occupied by#./find_file.sh /dev/dri/card0if [ $# -ne 1 ]thenecho "Incorrect number of parameters, please add a parameter."echo "example:Find which process /dev/dri/card0 is occupied by原创 2021-11-16 20:25:45 · 582 阅读 · 0 评论 -
Linux编译动态库 静态库
Linux 编译生成库文件的命令将 share.c 编译生成一个动态库: gcc share.c -o libshared.so -shared -fPIC将 static.c 编译生成一个静态库: 方式一: gcc -o static.o -c static.c ar -r libstatic.a static.o 方式二: gcc -o static.o -c static.c -shared -f...原创 2021-11-11 17:43:13 · 1837 阅读 · 0 评论 -
关于联合体的说明
先直接上代码:#include <stdio.h>typedef union{ int num; char ch;} union_test;int main(void){ union_test test; test.num = 0x12345678; test.ch = 'a'; printf("union num:%.8x\n", test.num); printf("union char:%c\n", test.ch原创 2021-11-01 17:50:48 · 477 阅读 · 0 评论 -
Linux查看某个文件被哪些进程占用
在工作过程中,我们进程需要查找某个文件被哪些进程占用。先上脚本:#!/bin/sh#example#Find which process /dev/dri/card0 is occupied by#./find_file.sh /dev/dri/card0if [ $# -ne 1 ]thenecho "Incorrect number of parameters, please add a parameter."echo "example:Find which process /d原创 2021-10-15 14:59:23 · 4550 阅读 · 0 评论 -
ps命令输出解析
今天看书的过程中,看到了对ps输出内容的解析,记录一下:执行命令:ps -axj输出如下:root@imx6qsabresd:/# ps -axjPPID PID PGID SID TTY TPGID STAT UID TIME COMMAND 0 1 1 1 ? -1 Ss 0 0:...原创 2020-01-02 21:13:02 · 1493 阅读 · 0 评论