
c语言
ComingFlying
这个作者很懒,什么都没留下…
展开
-
c语言中--typeof--关键字用法
C语言中 typeof 关键字是用来定义变量数据类型的。在linux内核源代码中广泛使用。下面是Linux内核源代码中一个关于typeof实例:#define min(x, y) ({ \ typeof(x) _min1 = (x); \ typeof(y) _min2 = (y); \ (void) (&原创 2017-02-27 12:56:24 · 2387 阅读 · 0 评论 -
异或操作
在一个多任务嵌入式系统中,有一个CPU可直接寻址的32位寄存器REGn,地址为0x1F000010,编写一个安全的函数,将寄存器REGn的指定为反转,其他bit不变!void bit_reverse(uint32_t nbit){ *((volatile unsigned int *)0x1F000010) ^= (0x01 << nbit);}...原创 2018-02-27 16:01:29 · 806 阅读 · 0 评论 -
GNU C中__attribute__
__attribute__基本介绍: 1. __attribute__ 可以设置函数属性、变量属性和类型属性。 2. __attribute__ 语法格式为:__attribute__ ((attribute-list)) attribute-list为相应的__attribute__参数,常见的有 aligned、packed、noreturn 3. __at转载 2017-11-21 18:10:31 · 316 阅读 · 0 评论 -
linux系统串口编程实例
#include #include #include #include #include #include #include bool set_opt(int fd, int nbits, char nevent, int nspeed, int nstop){ struct termios newtio, oldtio; //检测是否为终端设备描述符原创 2017-09-27 23:50:52 · 734 阅读 · 0 评论 -
FILE对象线程安全
根据apue讲述: 标准的IO例程可能从它们各自的内部数据结构的角度出发,是以线程安全的方式实现的!但在线程中,如果标准 IO例程都获取它们各自的锁,那么在做一次一个字符的IO时就会出现严重的性能下降!在这种情况下,需要对每 一个字符的读写操作进行读取锁和释放锁的动作!而如果使用flockfile和ftrylockfile函数获得给定FILE 对象关联的锁,并在fl翻译 2017-09-12 20:04:30 · 1085 阅读 · 0 评论 -
v4l2解析
v4l2的学习建议和流程解析: http://www.cnblogs.com/silence-hust/p/4464291.html原创 2017-09-23 19:42:08 · 510 阅读 · 0 评论 -
jpeg解码库使用实例
jpeg库下载地址: http://www.ijg.org/交叉编译三部曲: A ./configure --host=arm-linux-gcc --prefix=/home/flying/jpeg-install B make C make installjpeg库是解压jpeg/jpg图片或将图片压缩为jpeg/jpg格式所用到的库,使用起来比较简单!jpe原创 2017-09-09 23:19:44 · 2275 阅读 · 0 评论 -
unix环境高级编程一书中部分错误处理函数
#include <errno.h>#include <string.h>#include <stdio.h>#include <stdarg.h>#include <stdlib.h>#define MAXLINE 100static void err_doit(int, const char *, va_list);void err_ret(const char *fmt, ...)转载 2017-08-09 20:35:03 · 343 阅读 · 0 评论 -
Linux网络编程之"获取网络天气信息"
需求分析: 1.需要Linux c 网络编程基础, 2.需要了解 http 协议 3.需要天气信息相关api(可以从阿里云上购买,很便宜的!) 4.需要cJSON解析库(因为获取到的天气信息一般是用cJSON 封装,有的是用xml封装则需要相关解析库)cJSON下载链接:https://github.com/DaveGamble/cJSONcJSON在线原创 2017-08-15 17:05:04 · 1320 阅读 · 1 评论 -
sigqueue与kill详解及实例
/***********************************************************************************************相关函数: #include <sys/types.h> #include <signal.h> int kill(pid_t pid, int sig); int sig原创 2017-08-07 13:09:59 · 1136 阅读 · 0 评论 -
linux下避免僵尸进程的几种方法
linux下我们可以调用fork函数创建子进程,创建的子进程将会得到父进程的数据空间、堆、栈......副本(采用写时复制机制),子进程将会继承父进程的信号掩码、信号处理方式、当前工作目录、会话id、组id......。当子进程退出时父进程应当及时获取子进程退出状态,否则,如果父进程是一直在运行,那么子进程的退出状态将一直保存在内存中,直到父进程退出才释放。我们可以使用如下几种方法避免僵尸进程的产生原创 2017-08-05 14:52:30 · 1868 阅读 · 0 评论 -
pthread_cancel函数注意事项
/**************************************************相关函数: #include <pthread.h> int pthread_cancel(pthread_t thread) 成功返回0,失败返回错误码****************************************翻译 2017-08-04 20:49:29 · 1075 阅读 · 0 评论 -
select函数实例代码
select函数简解: selct 称之为多路复用IO,使用它可以让程序阻塞在select上,而非实际IO函数上. int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); nfds: fd_set描述符集中 {最大描原创 2017-08-17 16:27:47 · 582 阅读 · 0 评论 -
popen和pclose详解及实例
popen函数是标准c提供的一个管道创建函数,其内部操作主要是创建一个管道,调用fork创建子进程,关闭不需用的文件描述符,调用exec函数族执行popen的第一个参数。然后等到关闭。也就是说我们可以传递一个命令(ls -l......)或一个可执行程序。于pipe对比来说代码相对少很多。**************************************************相关函翻译 2017-08-02 19:32:56 · 2449 阅读 · 0 评论 -
linux网络编程之断点传输文件
以下载链接“http://www.boa.org/boa-0.94.13.tar.gz”为例:断点续传实验大概步骤:=====================1,使用gethostbyname()获取站点“www.boa.org”的IP地址2,以“boa-0.94.13.tar.gz”为例,构建HTTP请求报文首部: char *httpreq = "GET /boa-0.94.13.ta原创 2017-08-16 20:03:48 · 1003 阅读 · 0 评论 -
linux中管道(pipe)一谈
/*********************************************** 管道(pipe)是Linux上进程间通信的一种方式,其是半双工(数据流只能在一个方向上流动(还需要经过内核),及要么是接收,要么是发送),并且只能在父子进程 或 具有公共祖先的两个子进程间通信。 管道(pipe)一般是在调用fork函数之前调用pipe函数创建,这样的话,fork后子进程将得到父原创 2017-08-01 20:01:43 · 858 阅读 · 0 评论 -
数据高低位交换
刚看到一道面试题:用C语言实现一个数组中char A[n]每个字节内部8bit数据高低调转!在嵌入式中常用蝶式交换算法实现!其中还有查表法(比较占用内存)!蝶式交换算法:data = (data << 4) | (data >> 4);data = ((data << 2)&0xcc) | ((data >> 2)&...原创 2018-02-16 21:58:58 · 3342 阅读 · 0 评论