
Linux c/c++
文章平均质量分 78
Ricardo于
因为热爱,所以坚持,即便是让我掉头发。QQ联系596780065 Qt QML软件开发、嵌入式开发
展开
-
Linux c/c++编程--知识点(9)Linux 通配符可能产生系统问题
文章原文:https://www.uedbox.com/post/11241/返回知识列表:Linux c/c++编程-- 知识点汇总 1 通配符 当你在一个bash命令行中输入“*”时,bash会扩展到当前目录的所有文件,然后将他们全部作为参数传递给程序。例如:rm *,将会删除掉当前目录的所有文件。 2 文件名被当做参数 大多数的命令行程序受此影响。例如ls命令,当不适用任何参数时,输出是这个样子的:$ls $asdf.txt foobar -l如果创建这个 -l 文原创 2021-03-25 10:14:54 · 378 阅读 · 0 评论 -
Linux c/c++编程-- 知识点汇总
Linux c/c++编程--知识点(1) #define 和 do{...}while(0) 的妙用 Linux c/c++编程--知识点(2)为什么Linux内核里大量使用goto Linux c/c++编程--知识点(3)宏替换之字符串拼接 Linux c/c++编程--知识点(4)mmap用法和用法举例 Linux c/c++编程--知识点(6)ioctl 函数介绍 Linux c/c++编程--知识点(7)backtrace...原创 2021-03-25 09:41:42 · 223 阅读 · 0 评论 -
Linux c/c++编程-- 知识点(10)就写个最普通的write
#include <linux/string.h>unsigned long my_strlen(const char*ps_c){ if((char *)NULL == ps_c){ return 0; } return strlen(ps_s);}int write_file(const char *path, const char *value){ int fd, ret, len; fd = open(pa.原创 2020-10-10 14:20:52 · 138 阅读 · 0 评论 -
Linux c/c++编程--知识点(7)backtrace
文章原文:linux打印当前函数调用栈backtrace返回知识列表:/********************************************** * a demo for backtrace to print the calling flow. * Author: Ricardo.Yu * Date: 2020=08-25 **********************************************/#include <execinfo..原创 2020-08-25 11:10:56 · 422 阅读 · 0 评论 -
Linux c/c++编程--知识点(6)ioctl 函数介绍
文章原文:https://www.cnblogs.com/tdyizhen1314/p/4896689.html返回知识列表:什么是ioctl函数ioctl(input/output control)是设备驱动程序中对设备的I/O通道进行管理的函数。所谓对I/O通道进行管理,就是对设备的一些特性进行控制,例如串口的传输波特率、马达的转速等等。这个你最好man ioctl 获取更详细信息:#include <sys/ioctl.h>int ioctl(int fd, in原创 2020-07-27 11:21:00 · 5944 阅读 · 0 评论 -
Linux c/c++编程--知识点(4)mmap用法和用法举例
文章原文:https://www.cnblogs.com/arnoldlu/p/8330785.htmlhttps://blog.youkuaiyun.com/Holy_666/article/details/86532671返回知识列表:什么是 mmap()mmap, 从函数名就可以看出来这是memory map, 即地址的映射, 是一种内存映射文件的方法, 将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。mmap()系统调用使得进程之间通过原创 2020-07-24 11:55:36 · 1433 阅读 · 0 评论 -
Linux c/c++编程--知识点(3)宏替换之字符串拼接
#define BINDER_DEBUG_ENTRY(name) \static int binder_##name##_open(struct inode *inode, struct file *file) \{\ return single_open(file, binder_##name##_show, inode->i_private); \}\binder.c 中很好的一个使用字符串拼接 ## 命令的地方。实现了一个使用入参标识符,来生成不同的函数名的方法。注意.原创 2020-07-14 14:19:21 · 939 阅读 · 0 评论 -
Linux c/c++编程--知识点(2)为什么Linux内核里大量使用goto
文章原文:https://blog.youkuaiyun.com/zhengnianli/article/details/106684280返回知识列表:为什么Linux内核里大量使用goto,而很多书籍却不提倡使用?关于C语言的goto语句存在很多争议,很多书籍都建议“谨慎使用,或者根本不用”。Linux之父Linus在Linux中大量使用goto,也是在启示着我们可以合理使用goto语句。存在即合理,既然是C语言中的一个知识点,我们还是有必要学会使用。先看一些goto如何用:一、goto的基本语原创 2020-07-13 17:43:53 · 1333 阅读 · 1 评论 -
Linux c/c++编程--知识点(1) #define 和 do{...}while(0) 的妙用
文章原文:https://blog.youkuaiyun.com/tianxieeryang/article/details/86687065返回知识列表:为什么要这么用,举一个错误例子示范就可以了void print1() { printf("Hello 1");}void print2() { printf("Hello 2");}#define func() print1();print2();int main() { if (0) func();原创 2020-07-13 16:38:52 · 290 阅读 · 0 评论 -
Linux c/c++编程--知识点(8)sync函数影响性能
sync函数会强制将内核中的所有修改过的缓冲区刷新,并立刻返回,不会等到实际的I/O操作完成后再返回。所以sync函数并不能保证数据一定写入到了磁盘中。在Linux中有一个名为update的守护进程会定期(几秒或几十秒)调用sync函数,来将刷新内核缓冲区。项目中需要修改配置文件,可能采用如下的方法char cmd[256] = "\0";//如下仅是写入一条sed 替换命令,s...原创 2019-08-26 18:11:23 · 1741 阅读 · 0 评论 -
Linux c/c++编程--小心printf带给你的困扰
写了如下这段代码,竟然被成功编译通过,并执行了。printf("envv[%d] is %s\n",environ[index]); //可以看到两个输出,但只有一个变量。结果如下,而且每次运行结果还不一样。envv[833390] is (null) 光从结果看,我还以为index的运算出了问题。实际上是少了一个变量。printf("envv[%d] is ...原创 2019-04-19 08:59:55 · 839 阅读 · 0 评论 -
Linux c/c++编程--知识点(11)errno,strerror
#include <errno.h> 声明了errnoNAME errno - number of last errorSYNOPSIS #include <errno.h>errorno 的使用比较简单,只要include 这个头文件 errno.h 就可以了。同时,#include <string.h> 声...原创 2019-04-19 08:49:27 · 1506 阅读 · 0 评论 -
Linux c/c++编程--知识点(12)pthread_cond_timedwait中abstime的获取请使用clock_gettime而不要使用gettimeofday
问题描述:使用了pthread_cond_timedwait出现了死等的情况。通过gdb调试发现abstime竟然比系统时间长很多,大于1年。先上一个错误的代码:struct timespec timeAbs;struct timeval timeNow;gettimeofday(&timeNow, NULL);timeAbs.tv_sec=timeNow.tv_sec...原创 2019-04-19 08:39:38 · 1588 阅读 · 0 评论 -
Linux c/c++编程--知识点(14)(iniparser库)fputs写数据时,覆盖了下一行的数据. 使用iniparser的由来
问题描述:本来想实现一个功能,替换文本中的特定字符串,例如:name = ricardoversion = 19替换为name = Billion.Yuversion = 19实现思路:定位到文件中的一个位置,在这个位置上调用fputs函数替换文本内容。但是却发现当定位到文件位置后,插入数据时会覆盖之后的文本信息。错误实现如下,可以借鉴:#include <st...原创 2019-04-18 14:26:18 · 350 阅读 · 0 评论 -
Linux c/c++编程--知识点(13)(iniparser库)用于解析ini配置文件,iniparser库的使用
iniparser库的位置:Github:https://github.com/ndevilla/iniparser 我下载下来的文件: iniparser-master.zip项目中经常遇到需要解析ini配置文件的需求。ini配置文件的格式,如下[tvconfig]name = niubiversion = 10.2.3.4da...原创 2019-04-18 14:24:04 · 3540 阅读 · 0 评论 -
Linux c/c++编程--(内存2)测试内存的释放
1,如下是测试程序,获取内存的动态变化过程。#! /bin/shFILE='/usr/local/procrank.log'MEMLOG='/usr/local/meminfo.log'#./memtest &: > $FILE: > $MEMLOGprocrank | head -n 1 > $FILE#for i in {1..50..1...原创 2019-04-18 14:11:41 · 390 阅读 · 0 评论 -
Linux c/c++编程--(内存1)快速耗尽内存的memtest 程序
#include <stdio.h>#include <memory.h>#include <string.h>int main(){ int size = 1024 * 1024; int i = 0; while(true){ void * block = malloc(size * 20); //这里申请内存 20 M...原创 2019-04-18 13:57:58 · 1018 阅读 · 0 评论