linux学习
ding283595861
这个作者很懒,什么都没留下…
展开
-
check sd总容量或者剩余容量
code 学习原创 2022-09-28 15:49:21 · 331 阅读 · 1 评论 -
UTC转周秒 & 具体时间接口
1. UTC转周秒#define UNIX_GPS_DIF 315964800 // utc time base 1970.1.1; gps time base 1980.1.6, 3657 * 24 * 3600#define GPS_TIME_LEAPSEC 18#define SECONDS_PER_WEEK 604800//7*24*3600int utc_to_gps_time(uint32_t *Week, double *原创 2021-11-22 15:27:59 · 1944 阅读 · 2 评论 -
linux读取解析文件中字段key=value值
**/tmp/test.txt 内容如下:test_field=23test_field1=“test”****> > int check_file_fields(const char *file, char *dst, int len) {> > #define FILEBUFSIZE 128> > FILE *stream = NULL;> > char line[FILEBUFSIZE] = {0};> &原创 2021-09-26 10:01:57 · 843 阅读 · 0 评论 -
https SSL/TLS 详解
1.TLS/SSL的前世今生SSL(Secure Sockets Layer)最初由Netscape定义, 分别有SSLv2和SSLv3两个版本(SSLv1未曾对外发布); 在SSLv3之后SSL重命名为TLS。TLS(Transport Layer Security)版本从TLSv1.0开始, TLSv1.0是在SSLv3的基础上升级而来。多年以来已弃用的SSL协议也暴露出了一些高危漏洞(例如: POODLE, DROWN); 因此建议服务器禁用SSL3.0及SSL2.0, 只启用TLS协议。2原创 2021-07-15 11:04:50 · 1690 阅读 · 3 评论 -
linux 通过nand 存储、读取参数配置
1./dev/mtd9, 其nand块大小可以通过/proc/mtd查看。mtd9 size为0x001c0000, erasesize大小为0x20000.2.如要存储/读取数据,可以以mtd9为列。可以调用如下接口参数:#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>#include <dirent.h>#include <原创 2020-09-28 09:03:54 · 1173 阅读 · 0 评论 -
linux- c检测USB/SD卡热插拔(netlink)
可以参考 :**https://blog.csdn.net/u013566722/article/details/78806217拔插USB 或者SD卡,系统会打印相关的log信息,recvmsg 就会捕获到,然后解析相应的关键字段信息来判断usb或者sd卡是否拔掉或者插入。比如:sd卡拔插事件收到后,可以解析buf,解析方法如下:**static int parse_date(char *buf, int len){ if (strstr(buf, "ACTION=add") !原创 2020-07-29 12:37:36 · 2938 阅读 · 0 评论 -
linux如何修改文件夹所属用户名和用户组
格式:chown 账号名称 文件或目录实例:chown www vpsss增加权限给当前用户 chmod +wx filenamechmod -R 777 /upload用户组 chgrp -R foldname zdzchown -R 所有者用户名.组名 文件夹名称例如:chown -R zdz.nginx KooBox...原创 2020-05-18 08:29:08 · 3632 阅读 · 0 评论 -
linux 获取网络接口参数源码
net_network.cpp#include <net/if.h>#include <net/if_arp.h>#include <stdio.h>#include <string.h>#include <stdlib.h>#include <stdint.h>#include <ctype.h>...原创 2020-04-16 15:17:35 · 432 阅读 · 0 评论 -
linux 检查设备wifi连接的状态
typedef enum { NO_AP, HAVE_AP_NO_STA, HAVE_AP_HAVE_STA,}wifi_t;int getwifi_status(void){#define WIFI_FLAG_STR "sta's macaddr:" char buf[64] = {0}; int n = 0; FILE *m_pStream ...原创 2020-04-03 14:36:36 · 4137 阅读 · 0 评论 -
system V共享内存shm+ 信号量
#include <stdio.h>#include <sys/shm.h>#include <sys/types.h>#include <string.h>#include <error.h>#include <unistd.h>#include <sys/ipc.h>#include <sy...原创 2020-04-03 10:01:20 · 318 阅读 · 0 评论 -
进程间共享 命名管道FIFO
#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <signal.h>#include <pthread.h>#include <sys/types.h>#include <errno.h>#include <str...原创 2020-04-03 09:45:34 · 348 阅读 · 0 评论 -
linux 命名管道FIFO
#define FIFO_FILE_NUM 5 /*3*/char *fifo_name[FIFO_FILE_NUM] = {"/tmp/testfifo1", "/tmp/testfifo2", "/tmp/testfifo3", "/tmp/testfifo4", "/tmp/testfifo5"};fifo_file_handle *fifo_handle[FIFO_FILE_NUM];...原创 2020-04-03 09:23:28 · 184 阅读 · 0 评论 -
linux MTD子系统框架
1. MTD:Memory Technology Device,内存技术设备2. MTD分块设备和字符设备. 在/dev/目录下,可以看到类似mtd× / mtdblock× 文件3. 打开 “/proc/mtd” 文件即可解析出MTD分区信息,从这里可以知道MTD数目,SIZE,擦写块大小及DEV NAME。可看出每个mtd设备有两个:一个是RW设备,另一个的RO,一般使用不带ro后缀...原创 2020-03-26 09:11:44 · 836 阅读 · 0 评论 -
linux epoll 代码
socket通信 / epoll检测接入client#include <sys/socket.h>#include <sys/wait.h>#include <netinet/in.h>#include <netinet/tcp.h>#include <sys/epoll.h>#include <sys/sendfile...原创 2020-03-20 13:20:02 · 344 阅读 · 0 评论 -
linux内存管理——mmap函数详解
mmap函数是unix/linux下的系统调用。当存在客户-服务程序中复制文件时候,其数据流如下,要经历四次数据复制,开销很大。如果采用共享内存的方式,那么将大大优化IO操作,数据流变成了如下,数据只复制两次:映射文件或设备到内存中,取消映射就是munmap函数。语法如下:void *mmap(void *addr, size_t length, int prot, int fla...转载 2020-03-20 09:53:35 · 188 阅读 · 0 评论 -
linux select应用
用select来解决socket中的多客户问题使用select以后最大的优势是用户可以在一个线程内同时处理多个socket的IO请求。在网络编程中,当涉及到多客户访问服务器的情况,我们首先想到的办法就是fork出多个进程来处理每个客户连接。现在,我们同样可以使用select来处理多客户问题,而不用fork。服务器端#include <sys/types.h> #include ...原创 2020-03-19 14:01:51 · 204 阅读 · 0 评论 -
linux 系统启动脚本
/etc/init.d/rcS#! /bin/sh/bin/mount -aecho " _ _ _ _ _ _ _ _ _ _ _ _ \ _ _ _ _ _ ___ / /__/ \ |_/ / __ / - _ ___ / / / / / / ...原创 2020-03-19 09:33:38 · 359 阅读 · 0 评论 -
进程间通信 posix-共享内存
posix_sem_write.c#include <stdio.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <unistd.h>#include <sys/mman.h>#include <errno.h&...原创 2020-03-17 20:55:33 · 164 阅读 · 0 评论 -
进程间通信 posix-信号量
POSIX信号量有两种:有名信号量和无名信号量,无名信号量也被称作基于内存的信号量。有名信号量通过IPC名字进行进程间的同步,而无名信号量如果不是放在进程间的共享内存区中,是不能用来进行进程间同步的,只能用来进行线程同步System V的信号量一般用于进程同步, 且是内核持续的, api为semgetsemctlsemopPosix的有名信号量一般用于进程同步, 有名信号量是内核持续的....原创 2020-03-17 15:44:22 · 666 阅读 · 0 评论 -
进程间通信 posix-消息队列
Posix消息队列消息队列可以认为是一个消息链表,某个进程往一个消息队列中写入消息之前,不需要另外某个进程在该队列上等待消息的达到,这一点与管道和FIFO相反。Posix消息队列与SystemV消息队列的区别如下:对Posix消息队列的读总是返回最高优先级的最早消息,对System V消息队列的读则可以返回任意指定优先级的消息。当往一个空队列放置一个消息时,Posix消息队列允许产生一...原创 2020-03-16 13:31:35 · 306 阅读 · 0 评论 -
进程通信system V IPC----共享内存
#include <stdio.h>#include <string.h>#include <stdlib.h>#include <unistd.h>#include <sys/ipc.h>#include <sys/shm.h>#include <sys/wait.h>void error_out...原创 2020-03-08 15:32:22 · 177 阅读 · 0 评论 -
进程通信system V IPC----信号量
信号量通信机制主要用来实现进程间同步,避免并发访问共享资源。信号量可以标识系统可用资源的个数。最简单的信号量为二元信号量下图为 Linux 信号量通信机制的概念图。在实际应用中,两个进程通信可能会使用多个信号量,因此,Linux 在管理时以信号量集合的概念来管理。具体代码如下,可以直接编译测试:sem_comm.c#include"sem_comm.h"int sem_P(int s...原创 2020-03-07 17:43:08 · 197 阅读 · 0 评论 -
进程通信system V IPC----消息队列1
msg_server.c#include "comm.h"int main(){ int msg_id=create_msg_queue(); char buf[_SIZE_]; while(1) { memset(buf,0,sizeof(buf)); printf("please enter >:")...原创 2020-03-06 10:15:00 · 193 阅读 · 0 评论 -
进程通信system V IPC----消息队列
往消息队列中发送消息,消息的类型如结构体Msg所示:#include<sys/types.h>#include <sys/msg.h>#include<stdio.h>#include<unistd.h>#include<fcntl.h>typedef struct { long type; char name[2...原创 2020-03-06 09:51:12 · 188 阅读 · 0 评论 -
linux如何计算当前系统进程栈的大小
如何确认进程栈的大小:我们要知道栈的大小,那必须得知道栈的起始地址和结束地址。栈起始地址 获取很简单,只需要嵌入汇编指令获取栈指针 esp 地址即可。栈结束地址 的获取有点麻烦,我们需要先利用递归函数把栈搞溢出了,然后再 GDB 中把栈溢出的时候把栈指针 esp 打印出来即可。代码如下:/* file name: stacksize.c */ void *orig_stack_pointe...原创 2020-03-02 11:22:34 · 2002 阅读 · 0 评论 -
嵌入式linux根文件系统的创建
https://blog.csdn.net/zhangyzh656/article/details/82869103转载 2020-02-26 14:54:18 · 184 阅读 · 0 评论 -
c++ 宏定义包含双引号编译错误
宏定义如下:#define RBRAND "test"#define VER "1"#define BRANCH "A"#define CAMERA_VERSION RBRAND"_"VER"_"BRANCH编译: C ++11提示错误 invalid suffix on literal; C++11 requires a space between l...原创 2019-12-26 17:03:33 · 1126 阅读 · 0 评论 -
pthread_attr_setschedparam创建线程优先级
int create_comm_thread(pthread_t *pth, void*(*func)(void *), void *arg, int policy, int prio){ int ret; struct sched_param schedp; pthread_attr_t attr; pthread_attr_init(&attr); mems...原创 2019-12-25 16:18:37 · 2650 阅读 · 0 评论 -
GPIO控制接口代码接口
可以通过以下接口控制gpio高低电平static int sys_gpio_write(int pin, int value){ static const char values_str[] = "01"; char path[BUFFER_MAX] = {0}; int fd; snprintf(path, BUFFER_MAX, "/sys/class/g...原创 2019-12-23 21:01:55 · 949 阅读 · 0 评论 -
git diff 打patch
生成patchgit diff > file.patch打patchpatch -p1 < file.patchgit apply file.patch原创 2019-12-18 16:16:46 · 327 阅读 · 0 评论 -
pthread_join和pthread_detach的作用
简单来说:pthread_detach()即主线程与子线程分离,子线程结束后,资源自动回收。pthread_join()即是子线程合入主线程,主线程阻塞等待子线程结束,然后回收子线程资源.创建线程,设置线程名字,设置分离状态: pthread_t thread; pthread_create(&thread, NULL, &state, NULL); ...原创 2019-12-18 12:25:33 · 466 阅读 · 0 评论 -
stat用法
判断某个文件是否存在,可以用此接口.bool file_exists(const char *path){ struct stat buffer; int ret = stat(path, &buffer); return (ret == 0);}系统调用删除某个文件char runscript[128] = {};sprintf(runscript, "%s%s", ...原创 2019-12-18 09:38:03 · 187 阅读 · 0 评论 -
linux进程通信---几个发送信号的函数(kill,raise,alarm,pause)
常见的中断信号:会发现一个规律,前32种信号会有各种不同的名称,后32种会以“SIGRTMIN”或者“SIGRTMAX”开头,前者是从unix继承下来的信号,称为不可靠信号(也称为非实时信号),后者为了解决“不可靠信号”的问题进行了更改和扩充的信号形成了可靠信号(也称为实时信号)如果想要了解可靠与不可靠信号,需要了解信号的生命周期:一个完整的信号周期可以分为三个重要阶段,三个重要阶段有四个重...原创 2019-12-10 14:00:17 · 338 阅读 · 0 评论 -
fabsf用法
//通过接口findShutterValues 传递一个float类型, 可以查找匹配的shutter值int shutter_tbl[][2] ={ {1, 30}, {1, 40}, {1, 50}, {1, 60}, {1, 80}, {1, 100}, {1, 125}, {1, 160}, {1, 200}, {1, 250}, {1, 320}, {1, 4...原创 2019-12-10 08:26:02 · 556 阅读 · 0 评论 -
Linux下useradd与adduser的区别
Linux下创建用户时会用到useradd和adduser这两个命令,他们的区别如下: 1.使用useradd时,如果后面不添加任何参数选项,例如:#sudo useradd test创建出来的用户将是默认“三无”用户:一无Home Directory,二无密码,三无系统Shell。 2.使用adduser时,创建用户的过程更像是一种人机对话,系统会提示你输入各种信息,然后会根据这些信息帮...原创 2019-12-06 10:56:39 · 302 阅读 · 0 评论 -
aes256加密
/** Byte-oriented AES-256 implementation.* All lookup tables replaced with 'on the fly' calculations.** Copyright (c) 2007-2009 Ilya O. Levin, http://www.literatecode.com* Other contribut...原创 2019-12-05 18:35:54 · 341 阅读 · 0 评论 -
lcm使用方法
// file : userlcm.cpp#include <stdarg.h>#include "userlcm_manage.h"#define USER_LCM_LOG_ON 0#if USER_LCM_LOG_ON#define USERLCM_LOG(format,arg...) printf("[%s:%s][%u]: " format,__FILE__,__...原创 2019-12-05 13:31:03 · 2616 阅读 · 0 评论 -
uart 485串口 read实现
#include <pthread.h>#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>#include <sys/ioctl.h>#include &...原创 2019-12-04 14:28:38 · 721 阅读 · 0 评论 -
uart 485串口 write 实现
#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <pthread.h>#include <sys/types.h>#include <sys/stat.h>#include <sys/ioctl.h>#include &...原创 2019-12-04 14:27:51 · 1419 阅读 · 0 评论 -
pthread_cond_wait的使用
条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:1: 一个线程等待"条件变量的条件成立"而挂起;另一个线程使"条件成立"(给出条件成立信号)。2: 为了防止竞争,条件变量的使用总是和一个互斥锁结合在一起。#include<pthread.h>#include<unistd.h>#include<stdio.h>#include...原创 2019-12-04 13:43:49 · 289 阅读 · 0 评论