
c linux
文章平均质量分 74
wait*for*the*wind
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
popen 使用方法
自:https://blog.csdn.net/stone8761/article/details/77498439popen()可以执行shell命令,并读取此命令的返回值; popen()函数通过创建一个管道,调用fork()产生一个子进程,执行一个shell以运行命令来开启一个进程。可以通过这个管道执行标准输入输出操作。这个管道必须由pclose()函数关闭,必须由pclos...转载 2018-10-12 14:43:49 · 808 阅读 · 0 评论 -
mmap基础概念
mmap基础概念mmap是一种内存映射文件的方法,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。实现这样的映射关系后,进程就可以采用指针的方式读写操作这一段内存,而系统会自动回写脏页面到对应的文件磁盘上,即完成了对文件的操作而不必再调用read,write等系统调用函数。相反,内核空间对这段区域的修改也直接反映用户空间,从而可以实现不同进程间的文件共享。如下图所示: 由上图可以看出,进程的虚拟地址空间,由多个虚拟内...转载 2021-02-23 10:13:10 · 625 阅读 · 0 评论 -
Linux C中的open函数
open函数属于Linux中系统IO,用于“打开”文件,代码打开一个文件意味着获得了这个文件的访问句柄。int fd = open(参数1,参数2,参数3);int fd = open(const char *pathname,int flags,mode_t mode);1.句柄(file descriptor 简称fd)首先每个文件都属于自己的句柄,例如标准输入是0...转载 2019-06-13 11:31:40 · 15198 阅读 · 0 评论 -
c/c++标准预定义宏 .
C标准中的一些预定义宏昨天写代码时需要在代码获取当前编译时间,从而可动态地作为版本信息,因此用到了C标准中的一些预定义的宏。在此将C标准中定义的几个宏一并总结一下:__DATE__ 进行预处理的日期(“Mmm dd yyyy”形式的字符串文字,如May 27 2006) __FILE__ 代表当前源代码文件名的字符串文字 ,包含了详细路径,如G:/program/study/c+/转载 2016-04-09 14:41:07 · 431 阅读 · 0 评论 -
教你写Makefile
转载文Makefile值得一提的是,在Makefile中的命令,必须要以[Tab]键开始。 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解H...转载 2018-10-30 09:12:05 · 628 阅读 · 0 评论 -
printf(“\033[ 颜色特效控制
[cpp] view plain copy<prename="code"class="cpp">颜色特效控制: printf("\033[1;33mHelloWorld.\033[0m\n"); 颜色如下: none="\033[0m" black="\033[0;30m" dark_gray="\033[1;30m" blue="\033[0;34m" li...转载 2021-05-27 14:48:21 · 1018 阅读 · 0 评论 -
#、##、__VA_ARGS__和##__VA_ARGS__的作用
一、#用来把参数转换成字符串例子一:#define P(A) printf("%s:%d\n",#A,A);int main(int argc, char **argv){ int a = 1, b = 2; P(a); P(b); P(a+b); system("pause");}输出为:例子二:#define SQUARE(x) printf("The square of...转载 2021-04-20 13:12:00 · 109 阅读 · 0 评论 -
C语言字符串操作总结大全(超详细)
)字符串操作strcpy(p, p1) 复制字符串strncpy(p, p1, n) 复制指定长度字符串strcat(p, p1) 附加字符串strncat(p, p1, n) 附加指定长度字符串strlen(p) 取字符串长度strcmp(p, p1) 比较字符串strcasecmp忽略大小写比较字符串strncmp(p, p1, n) 比较指定长度字符串strchr(p, c) 在字符串中查找指定字符strrchr(p, c) 在字符串中反向查找strstr(p, p1) 查找字.转载 2020-05-12 15:29:23 · 197 阅读 · 0 评论 -
vsnprintf和snprintf
vsnprintf和snprintf是C语言printf家族函数的成员,相关函数列表如下:#include <stdio.h> int printf(const char *format, ...); //输出到标准输出 int fprintf(FILE *stream, const char *format, ...); //输出到文件 int sprintf(char *str, const char *format, ...); //输出到字转载 2021-05-27 14:55:35 · 1559 阅读 · 0 评论 -
函数指针
如果在程序中定义了一个函数,那么在编译时系统就会为这个函数代码分配一段存储空间,这段存储空间的首地址称为这个函数的地址。而且函数名表示的就是这个地址。既然是地址我们就可以定义一个指针变量来存放,这个指针变量就叫作函数指针变量,简称函数指针。那么这个指针变量怎么定义呢?虽然同样是指向一个地址,但指向函数的指针变量同我们之前讲的指向变量的指针变量的定义方式是不同的。例如:int(*p)...转载 2019-08-16 14:04:29 · 81 阅读 · 0 评论 -
popen 使用方法
popen()可以执行shell命令,并读取此命令的返回值; popen()函数通过创建一个管道,调用fork()产生一个子进程,执行一个shell以运行命令来开启一个进程。可以通过这个管道执行标准输入输出操作。这个管道必须由pclose()函数关闭,必须由pclose()函数关闭,必须由pclose()函数关闭,而不是fclose()函数(若使用fclose则会产生僵尸进程)。pc...转载 2018-11-21 09:23:42 · 1458 阅读 · 0 评论 -
Linux下DIR,dirent,stat等结构体详解
最近在看Linux下文件操作相关章节,遇到了这么几个结构体,被搞的晕乎乎的,今日有空,仔细研究了一下,受益匪浅。首先说说DIR这一结构体,以下为DIR结构体的定义:struct __dirstream { void *__fd; char *__data; int __entry_da转载 2017-01-24 16:54:19 · 343 阅读 · 0 评论 -
指针数组与数组指针详解
指针数组与数组指针详解1.什么是指针数组和数组指针? 指针数组:指针数组可以说成是”指针的数组”,首先这个变量是一个数组,其次,”指针”修饰这个数组,意思是说这个数组的所有元素都是指针类型,在32位系统中,指针占四个字节。 数组指针:数组指针可以说成是”数组的指针”,首先这个变量是一个指针,其次,”数组”修饰这个指针,意思是说这个指针存放着一个数组的首地址,或者说这个指针指向一个数组的首地址。 根据上面的解释,可以了解到指针数组和数组指针的区别,因为二者根本就是种类型的变量。...原创 2021-06-16 10:58:19 · 1166 阅读 · 0 评论 -
解析配置文件
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <fcntl.h>#include <sys/ioctl.h>#include <linux/types.h>#include <dirent.h>#include <errno.h>#include <sys/原创 2021-05-27 14:33:54 · 415 阅读 · 0 评论 -
解析字符串代码
解析如下字符串 {(0x84c,0x33);(0x850,0x3);(0x854,0x3);}void am335_usr_pinmux(void){ char *pinmux = getenv("pinmux"); int i;#if 0 for(i=0x800;i<0xa38 ;) { printf("addr:%x is %x\n",i,__raw_readl(i+0x44e10000));...原创 2021-05-27 13:53:05 · 339 阅读 · 0 评论 -
2020-11-09
学了结构体很久了,以为自己能够很熟练了,今天发现自己今天成员运算符 (.) 和指向运算符(->) 之间竟然犹豫了其实成员运算符是结构体变量访问成员是用的。而指向运算符则是结构体指针访问成员时使用的,因为一直都是再用结构体指针,突然用结构体变量,使用了指向运算符,看了半天才看出来,当然结构体指针也可以使用成员运算符但需要先取值,但一般没人这么用,我一直是这样认为 你对基础的掌握程度,决定着你能走多远与结构体一起出现的一般还有动态内存分配(栈里开辟内存),需要我们注意的是作用域,和传值传地址举转载 2020-11-09 13:31:16 · 191 阅读 · 0 评论 -
#、##、__VA_ARGS__的使用
使用打印信息的接口时,经常见到__VA_ARGS__和##__VA_ARGS__这两个字符串,花时间学习下这部分的知识,发现还有#和##这两个比较有意思的字符串,记下他们的用法:#: 用来把参数转换成字符串;例: #include <iostream> #define LOG(x) do { printf("%s=%d\n",#x,x); }while(0) int main() { int score = 96; ...转载 2020-10-24 13:05:05 · 768 阅读 · 0 评论 -
函数指针和指针函数
直接看代码void(*f[])(char*)这个是个什么东西?我们先看看下面的东西函数指针和指针函数的定义我们看个代码int*func(inta,intb)我们之前说过运算符的优先级,「 *」 的优先级低于「( 」由于「 * 」的优先级低于「()」的优先级,因而func首先和后面的「 () 」结合,也就意味着,func是一个函数。即:int*(func)(inta,intb)然后这个函数的返回值的类型是「 int *」 即:指...转载 2020-08-27 08:50:42 · 242 阅读 · 0 评论 -
执行linux 命令行程序not found 错误
最近在做tcu 的项目,重新移植了文件系统。运行客户的提供的程序报错:和客户沟通,交叉编译工具版本是一致的,感觉是缺少动态库用dd命令查看,但是这ldd无法显示,developer-RH2485-V2:$ ldd qrencode not a dynamic executable在网上看了看 ,找到了一种方式 使用readelfreadelf -l qrencode | grep ld-linux [Requesting program interpret...原创 2020-05-28 10:34:10 · 1504 阅读 · 0 评论 -
深入 理解char * ,char ** ,char a[ ] ,char *a[] 的区别
C语言中由于指针的灵活性,导致指针能代替数组使用,或者混合使用,这些导致了许多指针和数组的迷惑,因此,刻意再次深入探究了指针和数组这玩意儿,其他类型的数组比较简单,容易混淆的是字符数组和字符指针这两个。。。下面就开始剖析一下这两位的恩怨情仇。。。 1 数组的本质 数组是多个元素的集合,在内存中分布在地址相连的单元中,所以可以通过其下标访问不同单元的元素。。 2 指针。 指针...转载 2019-11-22 16:59:33 · 171 阅读 · 0 评论 -
Linux下如何模拟按键输入和模拟鼠标
查看/dev/input/eventX是什么类型的事件, cat /proc/bus/input/devices 设备有着自己特殊的按键键码,我需要将一些标准的按键,比如0-9,X-Z等模拟成标准按键,比如KEY_0,KEY-Z等,所以需要用到按键模拟,具体方法就是操作/dev/input/event1文件,向它写入个input_event结构体就可以模拟按键的输入了。 linux/in...转载 2019-11-19 13:39:31 · 815 阅读 · 1 评论 -
g++ 编译出现glibc detected 错误
*** glibc detected *** free(): invalid pointer:*** glibc detected *** malloc(): memory corruption:*** glibc detected *** double free or corruption (out): 0x00000000005c18a0 ****** glibc detected转载 2016-09-07 14:36:14 · 2119 阅读 · 0 评论 -
在Linux下如何使用GCC编译程序、简单生成静态库及动态库
在Linux下如何使用GCC编译程序、简单生成静态库及动态库。 本文适用于Linux下开发初学者。本文初步讲解在Linux下如何使用GCC编译程序、简单生成静态库及动态库。一、关于安装。一般系统默认是安装好编译器的,并且网络上有大量资料介绍不同发行版本下的安装问题,本文不再描述。二、C编程中的文件后缀名介绍 .a 静态库(打包文件) .c 未经过预处转载 2016-04-07 14:44:31 · 453 阅读 · 0 评论 -
关于Linux下串口通信的一点心得
1. 打开串口 与其他的关于设备编程的方法一样,在Linux 下,操作、控制串口也是通过操作起设备文件进行的。在 Linux 下,串口的设备文件是 /dev/ttyS0 或/dev/ttyS1 等。因此要读些串口,我们首先要打开串口: char *dev = "/dev/ttyS0"; // 串口1 i转载 2015-12-24 14:54:37 · 586 阅读 · 0 评论 -
文件操作opendir()/readdir()/closedir()/stat() .
头文件:#include#include在Linux下opendir()、readdir()和closedir()这三个函数主要用来遍历目录。int stat(const char *restrict pathname, struct stat *restrict buf);提供文件名字,获取文件对应属性。opendir():函数原型:DIR * ope转载 2015-06-30 09:58:28 · 1613 阅读 · 0 评论 -
linux C 遍历目录及其子目录 opendir -> readdir -> closedir .
1 在linux下遍历某一目录下内容LINUX下历遍目录的方法一般是这样的2 打开目录->读取->关闭目录3 相关函数是opendir -> readdir -> closedir,其原型如下:4 #include 5 DIR *opendir(const char *dirname);6 struct dirent *readdir(DIR *dirp);7 int cl转载 2015-06-30 09:56:28 · 475 阅读 · 0 评论 -
make clean、 make mrproper、make distclean的区别 .
内核编译时, 到底用make clean, make mrproper还是make distclean在编译内核时, 被make clean, make mrproer 和 make distclean搞的纠结, 稍微总结一下这三者之间的区别:解压内核源码包后, 到内核源代码目录树的顶层目录, 执行# make helpCleaning targets:clean转载 2015-06-30 10:13:42 · 1507 阅读 · 0 评论 -
setenv与putenv的区别 .
putenv与setenv的区别:putenv可以使用程序中已定义,且值形如"name=value"的字符串变量作为函数的实参。此时,系统将不再为该环境变量分配内存,使用的是程序中定义变量的内存,而是将该字符串的变量地址保存在环境中。因此该变量应该定义为全局变量,以防止该函数推出以后导致环境变量不可用。[cpp] view plaincopyprint?转载 2015-06-01 16:02:32 · 1221 阅读 · 0 评论 -
fd_set 的用法
select()函数主要是建立在fd_set类型的基础上的。fd_set(它比较重要所以先介绍一下)是一组文件描述字(fd)的集合,它用一位来表示一个fd(下面会仔细介绍),对于fd_set类型通过下面四个宏来操作: fd_set set; FD_ZERO(&set); /* 将set清零使集合中不含任何fd*/转载 2016-09-07 14:39:39 · 3666 阅读 · 0 评论 -
select 用法
分类: LINUX阻塞方式block,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回。使用Select就可以完成非阻塞non-block,就是进程或线程执行此函数时不必非要等待事件的发生,一旦执行肯定返回,以返回值的不同来反映函数的执行情况,如果事件发生则与阻塞方式相同,若事件没有发生则返回一个代码来告知事件未发生,而进程或...转载 2016-09-07 14:42:45 · 417 阅读 · 0 评论 -
c程序中出现segment error 和 bus error 的原因
在c程序中,经常会遇到段错误(segment error)和总线错误(bus error),这两种问题出现的原因可能如下 段错误: 对一个NULL指针解引用。 访问程序进程以外的内存空间。 实际上,第一个原因可以规约到第二个原因,在一个c程序的虚拟内存空间中,从低地址到高地址一次是代码区,堆区(向上增长),栈区(向下增长),最上是常量区,转载 2016-09-07 14:47:04 · 3201 阅读 · 0 评论 -
Linux 静态库与动态库搜索路径设置
原文地址:http://blog.csdn.net/jaylong35/article/details/6132087 库文件在连接(静态库和共享库)和运行(仅限于使用共享库的程序)时被使用,其搜索路径是在系统中进行设置的。一般 Linux 系统把 /lib 和 /usr/lib 两个目录作为默认的库搜索路径,所以使用这两个目录中的库时不需要进行设置搜索路径即可直接使用。对于处...转载 2018-09-20 10:15:22 · 892 阅读 · 0 评论 -
Linux下创建、查看、提取和修改静态库(*.a)
先说明一点,静态库文件是由多个目标文件打包而成的,在windows下静态库文件的后缀是.lib,而在linux下静态库文件的后缀是.a(a是archive的缩写,也就是文档文件)。 废话少说,下面直接进入主题。 1.创建两个c文件:addition.c 和 multiplication.caddition.c1 //addition.c2 int addition (i...转载 2018-09-20 10:24:15 · 2044 阅读 · 0 评论 -
drm直接画图
#define _FILE_OFFSET_BITS 64#include <inttypes.h>#include <stdio.h>#include <stdlib.h>#include <sys/mman.h>#include <xf86drm.h>#include <xf86drmMode.h>#inclu...转载 2018-10-31 10:41:14 · 670 阅读 · 0 评论 -
wpa_supplicant-2.6源码交叉编译
源码下载官网:https://w1.fi/releases/libnl-1.1.4交叉编译:./configure CC=xx-gcc \--prefix=/home/xx/openspurce/wpa_s_2_6/opensrc/release \--sysconfdir=/home/xxx/openspurce/wpa_s_2_6/opensrc/release --host=...转载 2019-01-21 11:10:26 · 262 阅读 · 0 评论 -
Linux下C程序执行shell命令并获取返回结果的方法
Linux下的C编程有以下几种方法可以执行shell命令 system()函数 exec函数簇 popen()函数如果还需要获取返回结果,有两种较简单方便的方法 popen()函数 匿名管道1.system()函数所需头文件:#include<stdlib.h>函数原型:int system(const char *cmdst...转载 2019-03-29 10:55:39 · 1413 阅读 · 0 评论 -
【Linux】动态库和静态库
Linux操作系统中,依据函数库是否被编译到程序内部,将其分为两大类,静态函数库和动态函数库。Linux下的函数库放在/lib或/usr/lib,头文件放在/usr/include。在既有静态库又有动态库的情况下,默认使用动态库,如果强制使用静态库则需要加-static选项支持。关于静态库1.拓展名通常为libxxx.a。2.静态库在编译时会直接整合到执行程序当中,因此用...转载 2019-07-24 10:21:53 · 113 阅读 · 0 评论 -
getenv putenv setenv和unsetenv详解 .
getenv:定义函数char * getenv(const char *name);表头文件#include 函数说明getenv()用来取得参数name环境变量的内容。参数name为环境变量的名称,如果该变量存在则会返回指向该内容的指针。环境变量的格式为name=value。转载 2015-06-01 16:00:37 · 642 阅读 · 0 评论