![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux应用编程
文章平均质量分 55
L7256
这个作者很懒,什么都没留下…
展开
-
linux时区相关
--->一步步跟进去发现是调用timekeep的 nsecs = timekeeping_get_ns(&tk->tkr_mono);gettimeofday和settimeofday可读取/设置时间,时区。而时区可通过tzset和设置环境变量去影响localtime。需要注意图中虚线的部分表示这个时间受到时区的影响!工具timedatectl 即可查看系统时间和时区。glibc源码和官方文档。原创 2022-11-18 14:34:21 · 1262 阅读 · 0 评论 -
ini文件的读取
【代码】ini文件的读写。原创 2022-11-04 14:05:29 · 880 阅读 · 0 评论 -
pthread_attr_t 线程属性
加了些注释:可知pthread_attr_t就是线程的属性,以及相关的get.set用法。原创 2022-11-03 10:42:40 · 294 阅读 · 0 评论 -
NXP的IPCF
IPCF通信原理:消息队列;环形,buffer descripter来维护两个OS之间的通信。OS1上的内存池(共享内存):OS1发送的时候ipc_shm_acquire_buf()【即从共享内存拿一片数据】,然后发送数据【往共享内存写数据】,并同步到这片内存到OS2的共享内存。产生中断通知对端OS。OS2收到中断:拷贝OS1调用ipc_shm_acquire_buf()操作的共享内存的数据,释放这片共享内存pc_shm_release_buf(),并同步到OS1的共享内存。原创 2022-10-06 15:25:52 · 2707 阅读 · 0 评论 -
poll函数
当网路两端有断开或者连接,可通过link up/link down让两端重新回到初始化----!>0:数组fds中准备好读、写或出错状态的那些socket描述符的总数量;==0:数组fds中没有任何socket描述符准备好读、写,或出错。-1: poll函数调用失败,同时会自动设置全局变量errno;//绑定name设备去发送消息。从网上找的简单的例子。原创 2022-09-09 11:07:53 · 260 阅读 · 0 评论 -
Linuxptp在arm平台的移植与测试
默认是prefix = /usr/local我这里修改为。原创 2022-08-11 17:06:53 · 768 阅读 · 2 评论 -
Linux进程间通信
目录1. 匿名管道2. 命名管道3.命令行中的管道("|")4. 进程间通信 IPC5. 共享内存5.1 共享内存的创建5.2 共享内存的释放5.2 共享内存的关联和去关联1. 共享内存的关联(shm attach)2. 共享内存的去关联(shm deatch)6. 消息队列6.1 消息队列的创建6.2 消息队列的释放 6.2 消息队列发送数据 6.2 消息队列获取数据............原创 2022-07-13 14:33:07 · 264 阅读 · 0 评论 -
int main(int arg , char* argv[])的使用及用处
一 int main(int arg , char* argv[])的简单使用main中的这两个参数,第一个是判定执行可执行文件的时候输入的参数的个数,简单的说就是下例中./a.out后面的参数个数,可打印看出arg = 4。 而char* arg[]中arg[0],arg[1].....的值为地址,所以打印时应用*arg[i]即可打印结果。#include "stdio.h"int main(int arg , char* argv[])//等价于 int main(int arg, c..原创 2021-01-22 11:23:42 · 1112 阅读 · 0 评论 -
linux环境下C++代码打印函数堆栈调用情况
#include <execinfo.h>#include <unistd.h>#include <string.h>#include <stdio.h>#define STACK_INFO_LEN 1024 //每个栈的最大长度void ShowTraceStack(const char* szBriefInfo) //放在被调用的最后一个函数,可看到程序调用到这里的所有调用{ static const int MAX_STAC.转载 2021-02-26 12:29:52 · 711 阅读 · 0 评论 -
__attribute__((visibility (“default“)))
这个说白了就是限制函数的使用权限:但是需要在GCC 4.0及以上版本中才可以用。#if (defined (__GNUC__) && !defined(__INTEGRITY))#define PUBLIC_API __attribute__ ((visibility ("default")))#else#define PUBLIC_API#endif“default”:用它定义的符号将被导出,动态库中的函数默认是可见的。”hidden”:用它定义的符号将不被原创 2021-12-21 09:03:55 · 2283 阅读 · 0 评论 -
简单的GDB调试core文件
#include <stdio.h>using namespace std;void test(){ int *p = NULL; *p = 1;}int main(){ test(); return 0;}以上述的文件代码为例,执行以下步骤: gcc -g -o demo demo.c -ldl./demo段错误 (核心已转储)ulimit -c unlimited // 设置 core 文件大小为无限制./demo.原创 2021-06-30 16:26:40 · 134 阅读 · 0 评论 -
【Linux】守护线程自动重启某个程序的3种常用办法
1.shell脚本2.写signal回调函数---在厘米不管是内核创建的进程还是用户空间创建的进程都会在/proc目录下新建一个进程号对应的文件夹,所以都会通过ps显示出来。原创 2021-06-13 17:34:28 · 2837 阅读 · 2 评论 -
【Linux】守护线程(Daemon)
1.会话 会话组2.线程 线程组现有的机制是:某个运行在终端里面的程序,如果关闭终端,就会杀死setdsid():关闭终端后,这个线程也不会被关闭。原创 2021-05-31 23:29:23 · 936 阅读 · 0 评论 -
【Linux】定时器简单使用
#include <stdio.h>#include <signal.h> #include <sys/time.h>#include <time.h>#include <unistd.h>#include <errno.h>void sigFunc(int ){ static int iCnt = 0; printf("The %d Times: Hello world\n", iCnt++);} .原创 2021-05-31 22:12:20 · 166 阅读 · 1 评论 -
【Linux】 Pthread的基本使用
1.函数的基本使用函数原型:int pthread_create( pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg); 功能:创建一个线程,创建成功,返回值<0, 反之 > 0. 参数:线程ID,线程属性 ,线程处理函数 ,线程处理函数参数函数原型:int pthread_join...原创 2020-06-17 23:59:38 · 1668 阅读 · 1 评论 -
【Linux】 信号量sem
1.常用函数/*breaf: 创建一个信号量*///pshared 为0代表此信号量为局部信号量int sem_init(sem_t *sem, int pshared, unsigned int value);/*breaf: 信号量值(初值必须大于1)减1 */int sem_wait(sem_t *sem);/*breaf: 信号量值加1 */int sem_post(sem_t *sem);/*breaf: 清理信号量 */int sem_destroy(sem_t *s原创 2020-06-21 00:29:32 · 466 阅读 · 0 评论 -
【Linux】互斥量mutex
1.简介:在代码运行过程中,当两个线程同时使用一个变量X:初值为10,比如A线程在作X=X-1 ,B线程在X=X+1;那么有可能,A线程X-1=9,切到了B线程,此时X+1=10,那么程序切回A线程后X=10;离开线程A之前X = 9,回到线程A时X= 10;明显X的值对A线程来说是异常的,这不是我们期望程序的运行逻辑。于是产生了互斥量。2.互斥量简单用法:在线程A中,互斥量上锁之后,变量X仅仅可以被线程A修改值。而线程B无法修改X的值,当A线程关于X的逻辑运行完了之后,互斥量解锁,变量X才可以原创 2020-06-21 17:06:25 · 248 阅读 · 0 评论