
linux/unix系统编程
yi412
这个作者很懒,什么都没留下…
展开
-
GCC 对 #pragma pack(N)和__attribute__((packed)) 的支持问题
GCC 对 #pragma pack(N) 的支持问题 #pragma pack这里重点讨论内存对齐的问题和#pragma pack()的使用方法。什么是内存对齐?先看下面的结构:(结构体对齐原则:结构体所占字节总数是其最大类型字节数的整数倍)struct TestStruct1{char c1;short s;char c2;int i;};假转载 2015-06-30 16:04:55 · 8048 阅读 · 0 评论 -
linux 串口通信
/* * UARTOperate.c * * Created on: 2010-10-20 * Author: vv */#include /*标准输入输出定义*/#include /*标准函数库定义*/#include /*Unix 标准函数定义*/#include /*定义系统类型 */#include转载 2015-05-23 16:19:28 · 676 阅读 · 0 评论 -
Linux串口通信编程
串口是计算机上一种非常通用设备通信的协议,常用PC机上包含的是RS232规格的串口,具有连接线少,通讯简单,得到广泛的使用。 Linux对所有设备的访问是通过设备文件来进行的,串口也是这样,为了访问串口,只需打开其设备文件即可操作串口设备。在linux系统下面,每一个串口设备都有设备文件与其关联,设备文件位于系统的/dev目录下面。如linux下的/ttyS0,/ttyS1分别表示的是转载 2015-05-23 16:38:20 · 1736 阅读 · 0 评论 -
五大开源Web服务器
开源产品的出现不仅获得了个人用户的喜爱,众多知名企业也青睐于它。虽然开源产品数不胜数,但并不是每一个开源产品都能被广泛应用并得到大众的好评。在众多成功的开源产品中,只有少数领头羊,而其它产品只能望其项背。本文汇总了五款开源Web服务器,来看看有没有你需要的吧! Apache Apache是一个免费的网络服务器系统,基于“开源”许可发布。阿帕奇版本2.0在大部分基于U转载 2015-05-19 08:49:59 · 19391 阅读 · 0 评论 -
strdup字符复制,strtok_r分割字符串,strchr查找字符等的用法
strdup字符复制,strtok_r分割字符串,strchr查找字符等的用法#include #include #include #include char *input = "My test string";int main(int argc, char *argv[]){ char *token=NULL, *arg=NULL, *saveptr=NULL;原创 2015-04-03 15:04:02 · 977 阅读 · 0 评论 -
pthread_create和pthread_detach, pthread_cancel的使用
pthread_create和pthread_detach, pthread_cancel的使用原创 2015-04-03 16:42:25 · 2781 阅读 · 0 评论 -
linux线程,pthread_join和pthread_cleanup_push和pthread_cleanup_pop
linux线程,pthread_join和pthread_cleanup_push和pthread_cleanup_poppthread_cleanup_push和pthread_cleanup_pop,是堆栈,先进后出。#include #include #include #include #include void *thread_function(void *arg)原创 2015-04-03 16:31:52 · 708 阅读 · 0 评论 -
线程互斥和条件同步,pthread_mutex和pthread_cond
线程互斥和条件同步,pthread_mutex和pthread_cond#include #include #include //getopt_long()头文件位置 #include #include #include #include void *thread1_function(void *arg);void *thread2_function(void *原创 2015-04-03 14:12:59 · 537 阅读 · 0 评论 -
POSIX定时器--timer_create等系列
直接上程序程序1:采用新线程派驻的通知方式[cpp] view plaincopy#include #include #include #include #include #include #define CLOCKID CLOCK_REALTIME void timer_thread(union sigval v) {转载 2015-07-03 13:45:46 · 4075 阅读 · 0 评论 -
Linux系统调用--getitimer/setitimer函数详解
忘了说明: setitimer一个进程中只能有一个 下一个会覆盖前一个的定时 想一个进程多个定时器只能自己实现。setitimer() 不支持在同一进程中同时使用多次以支持多个定时器。linux有关定时器(setitimer)的叙述是这样的: linux系统给每个进程提供了3个定时器,每个定时器在各自不同的域里面计数。当任何一个timer计数到结束了,系统就发送一个信号(sign转载 2015-07-03 14:43:31 · 6964 阅读 · 1 评论 -
How To Build GCC 4.8.2 ARM Cross-Compiler
gcc-4_8_2How To Build GCC 4.8.2 ARM Cross-CompilerIntroIn this How To we are going to build an ARM cross-compiler based upon GCC 4.8.2. Before you begin you might want to take a转载 2016-12-01 10:49:24 · 632 阅读 · 0 评论 -
atoi 和 itoa的实现
atoi 和 itoa的实现转载:http://www.cnblogs.com/cobbliu/archive/2012/08/25/2656176.htmlatoi 和 itoa是面试笔试经常要考到的题目,下面两份代码是用C语言实现的atoi和itoa:1, atoi原型: int atoi(const char *nptr);函数说明: 参数nptr字符串,如果第一个非转载 2015-08-08 18:20:03 · 662 阅读 · 0 评论 -
Linux 32位系统中的一些时间转换
在项目中用的一些时间转函数(修改long long型,避免int溢出):#include struct itm { int tm_sec; /* 秒 – 取值区间为[0,59] */ int tm_min; /* 分 - 取值区间为[0,59] */ int tm_hour; /* 时 - 取值区间为[0,23] */ in原创 2015-07-21 16:03:21 · 858 阅读 · 0 评论 -
蔡勒公式-C编程日期转换星期
#include int main(int argc, char *argv[]){ int year,month,day; while( scanf("%d%d%d",&year,&month,&day) != EOF ) { int i,j,k; int c = year/100; int y = year-c*100;转载 2015-07-21 10:51:29 · 3128 阅读 · 1 评论 -
函数getopt(),及其参数optind
函数getopt(),及其参数optindgetopt被用来解析命令行选项参数。#include extern char*optarg; //选项的参数指针 extern int optind, //下一次调用getopt的时,从optind存储的位置处重新开始检查选项。 extern intopterr, //当opterr=0时,g转载 2015-07-20 22:45:58 · 483 阅读 · 0 评论 -
c语言中调用shell脚本返回值问题分析
c语言中调用shell脚本C程序调用shell脚本共有三种方式:system()、popen()、exec系列函数1)system(shell命令或shell脚本路径); 执行过程:system()会调用fork()产生子进程,由子进程来调用/bin/sh-c string来执行参数string字符串所代表的命令,此命令执行完后随即返回原调用的进程。在转载 2015-07-29 19:07:28 · 2262 阅读 · 0 评论 -
Linux在应用层通过mmap映射后,读写寄存器
可以通过操作/dev/mem设备文件,以及mmap函数,将寄存器的地址映射到用户空间,直接在应用层对寄存器进行操作,示例如下:[cpp] view plaincopy#include #include #include #include #include #include #include #define AUDIO_REG_BAS转载 2015-08-08 10:33:36 · 5593 阅读 · 0 评论 -
printf输出字体颜色
printf输出字体颜色 有时候为了实现在终端输出的时候字体能够带颜色,并且可以产生简单的闪烁的功能,特写了下列的代码实现hello world的带颜色的输出,并且每过一秒产生一个闪烁的功能.(注:具体还得判断终端类型)CODE:#include#include#include#includeint flag = 0;void转载 2015-07-13 20:11:16 · 2439 阅读 · 0 评论 -
S3C2410按键poll
poll函数用于监测多个等待事件,若事件未发生,进程睡眠,放弃CPU控制权,若监测的任何一个事件发生,poll将唤醒睡眠的进程,并判断是什么等待事件发生,执行相应的操作。poll函数退出后,struct pollfd变量的所有值被清零,需要重新设置。示例是使用poll函数来监测按键的输入------------------------------------------------转载 2015-07-06 21:45:34 · 590 阅读 · 0 评论 -
一个简单的通用Makefile实现
一个简单的通用Makefile实现 Makefile是Linux下程序开发的自动化编译工具,一个好的Makefile应该准确的识别编译目标与源文件的依赖关系,并且有着高效的编译效率,即每次重新make时只需要处理那些修改过的文件即可。Makefile拥有很多复杂的功能,这里不可能也没必要一一介绍,为了简化问题的复杂性,本文仅和大家讨论针对单目录下的C/C++项目开发,如何写一个通用的Mak转载 2015-02-06 16:03:55 · 616 阅读 · 0 评论 -
如何移植开源软件到嵌入式Linux系统
我们知道,在PC机Linux上,安装开源软件,一般来讲,大多是如下几个步骤就搞定了。tar -xzf open_source_software.tar.gzcd open_source_software./configuremake make install但是,如果要将开源软件移植到嵌入式Linux单板上运行,情况却略有不同。本文就来说说这项工作转载 2015-02-06 09:05:47 · 969 阅读 · 0 评论 -
mjpg-streamer项目源码分析
mjpg-streamer项目源码分析 2013-09-09 10:41:05| 分类:GT2440 |举报|字号 订阅 mjpg-streamer项目源码分析2012-11-06 10:04 397人阅读 评论(2) 收藏 举报 前一段时间自己买了个开发板(GT2440的),可是我没有够相应的买cmos摄像头,转载 2014-08-04 00:47:57 · 770 阅读 · 0 评论 -
MJPG-streamer源码简析
MJPG-streamer源码简析参考:http://blog.youkuaiyun.com/tandesir/article/details/8437442 系列 http://blog.youkuaiyun.com/guishong/article/details/8660725 http://blog.youkuaiyun.com/dongshutong/article/details/718477转载 2014-08-04 00:46:13 · 1532 阅读 · 0 评论 -
mjpg-stream的使用
毕设进入了纠结阶段,所以需要一些Breakthrough。现在卡在了视频的采集上,我原先的想法是,将摄像头采集到的数据压缩成mp4格式,然后将mp4的视频流发布到网络中,然后我找来mp4的格式解析文档读,结果一塌糊涂,格式还是比较复杂的,并且从摄像头采集到的数据的压缩的过程也比较麻烦,现在没有时间处理了。于是,我就想起了我的老朋友:mjpg-stream。mjpg-stream是一个使转载 2014-08-04 00:26:24 · 5002 阅读 · 0 评论 -
linux C程序中获取shell脚本输出(如获取system命令输出)
linux C程序中获取shell脚本输出(如获取system命令输出)1.前言Unix界有一句名言:“一行shell脚本胜过万行C程序”,虽然这句话有些夸张,但不可否认的是,借助脚本确实能够极大的简化一些编程工作。比如实现一个ping程序来测试网络的连通性,实现ping函数需要写上200~300行代码,为什么不能直接调用系统的ping命转载 2014-05-13 09:27:23 · 1793 阅读 · 0 评论 -
wpa_supplicant无线网络配置
wpa_supplicant无线网络配置目前可以使用wireless-tools 或wpa_supplicant工具来配置无线网络。请记住重要的一点是,对无线网络的配置是全局性的,而非针对具体的接口。 wpa_supplicant是一个较好的选择,但缺点是它不支持所有的驱动。请浏览wpa_supplicant网站获得它所支持的驱动列表。另外,wpa_supplicant目前只能转载 2014-05-13 19:53:00 · 877 阅读 · 0 评论 -
关于wifi 同时做ap, sta 问题
在wifi 作为热点的时候,同时又作为station连上别的ap. 现在很多路由器都有这个功能。请教几个问题。1. 这个是否需要wifi 芯片的硬件支持。(独立并行)2. 有没有在android 成功实现过此功能的,如果要实现工作量是否很大。3. 如果用纯软件实现,只能做到时分处理,来回切换mode 会消耗cpu 同时网络数据包也会有延迟和丢包。(是否可行?)由于对原创 2014-05-13 21:01:43 · 7320 阅读 · 1 评论 -
Linux下的iwpriv(iwlist、iwconfig)的简单应用
Linux下的iwpriv(iwlist、iwconfig)的简单应用无线网络飞速发展的今天,许多设备都提供了连接无线网络的功能。那么Linux下的wifi到底该怎么配置、连接呢??开始配置之前,我们要说说iw家族。iw是linux下常用的wifi配置工具,网上有相应的库和源码。全名为wirelessTools。配置wifi模块,并连接相应的无线网络过程:主要使转载 2014-05-13 20:26:49 · 824 阅读 · 0 评论 -
使用dnsmasq提供DNS和DHCP服务
使用dnsmasq提供DNS和DHCP服务在Linux中使用的DNS和DHCP软件我们一般是采用ISC的BIND和dhcpd. 在多数环境中这两个软件的确很棒也挺安全。但是当我们的使用环境是家庭或者办公室这样的网络环境,也许用其他更小型一些的软件代替他们会更合适。这里介绍的是能够同时提供DNS和DHCP服务的软件dnsmasq。它能够缓存外部DNS记录,同时提供本地DNS解析或者作为外转载 2014-05-13 20:23:55 · 3313 阅读 · 0 评论 -
Base64编码、解码的实现
Base64编码、解码的实现encodingbytenull网络服务器table////////////////////////////////////////////////////////引用网文/////////////////////////////////////////////什么是Base64?按照RFC2045的定义, Base64被定义为:Base64内容转载 2014-05-16 17:19:17 · 882 阅读 · 0 评论 -
mjpg-streamer项目源码分析
mjpg-streamer项目源码分析2012-11-06 10:04 397人阅读 评论(2) 收藏 举报 前一段时间自己买了个开发板(GT2440的),可是我没有够相应的买cmos摄像头,可是又想做下国嵌的usb视频采集和传输的哪个项目,没办法,只好网上找找相关的项目,最终发现了mjpg-streamer这个开源项目。看了blog们的文章,有种激动,于是自己问同学借了转载 2014-07-09 16:32:59 · 839 阅读 · 0 评论 -
mjpg_streamer源码的分析及针对图像处理算法的修改
mjpg_streamer源码的分析及针对图像处理算法的修改 最近在研究mjpg_streamer,发现这是个好东西,关于mjpg_streamer就不做具体介绍了,总之它是在Linux上运行的视频服务器,可以将摄像头采集到的视频数据通过网络传输到客户端,实现视频监控,mjpg_streamer是开源项目。 首先简要的分析一下mjpg_streamer的源码及其工作过程。我主要参考转载 2014-07-10 09:28:49 · 6808 阅读 · 6 评论 -
secureCRT The remote system refused the connection.
我在实践远程登录工具SecureCRT的时候遇到了这个问题 Ubuntu缺省安装了openssh-client,所以在这里就不安装了,如果你的系统没有安装的话,再用apt-get安装上即可。然后确认sshserver是否启动了:ps -e |grep ssh如果只有ssh-agent那ssh-server还没有启动,需要/etc/init.d/ssh start,如转载 2015-02-03 10:25:20 · 1714 阅读 · 0 评论 -
在mini2440上移植Bluetooth
在mini2440上移植Bluetooth(2013-07-24 20:37:09) (参考:http://blog.youkuaiyun.com/guoxiaojie_415/article/details/5383898)1.编译安装bluez-libs-3.36.tar.gzsudo mkdir /opt/libsudo mkdir /opt/utils这个库不需要什转载 2014-09-18 00:29:02 · 1668 阅读 · 0 评论 -
ffmpeg的编译、安装及使用(for x86,for arm)
ffmpeg的编译、安装及使用(for x86,for arm)2009-10-23 07:20:11 http://blog.chinaunix.net/uid-8210028-id-337681.html http://hi.baidu.com/iminway/blog/item/bda2db4e29ced701b2de05f1.html 最新的ffmp转载 2014-09-03 10:10:37 · 1279 阅读 · 0 评论 -
没有makefile的日子
没有makefile的日子1. 没有makefile的日子2. 参考资料及代码下载. 没有makefile的日子 [上一篇]中介绍了makefile的编写规则,第一个标题是“没有makefile的日子”,收到[博客园]的网友zhuangzhuang1988的回复可以使用automake来自动生成makefile。如果在linux下从源代码安装过程序的话,通常转载 2014-08-28 10:04:13 · 505 阅读 · 0 评论 -
在ubuntu上,源码编译安装Mplayer
在ubuntu上,源码编译安装Mplayerstep 1,准备好所有的文件,如下所示:MPlayer-1.0rc2.tar.bz2Mplayer源文件 Blue-1.7.tar.bz2[这个是博客附件,下载后请把.rar后缀去掉]mplayer 皮肤文件 ,可以下载多个font-arial-cp1250.tar.bz2[这个是博客附件,下载后请把.rar后缀去掉转载 2014-09-22 16:22:03 · 1532 阅读 · 0 评论 -
开源流媒体服务器:Feng
开源流媒体服务器:Feng Feng是LSCUBE维护的开源流媒体服务器,兼容IETF标准,实现了RTSP、RTP/RTCP。Feng支持的编码标准:音频:MPEG Audio (MPEG-1/2 Layer I/II/III) (rfc2250)Vorbis (draft)AAC (MPEG-4 Part 3) (rfc3640)视频:MPEG转载 2014-08-26 21:22:47 · 1334 阅读 · 0 评论 -
printf函数的实现原理
首先在介绍可变参数表函数的设计之前,我们先来介绍一下最经典的可变参数表printf函数的实现原理。一、printf函数的实现原理在C/C++中,对函数参数的扫描是从后向前的。C/C++的函数参数是通过压入堆栈的方式来给函数传参数的(堆栈是一种先进后出的数据结构),最先压入的参数最后出来,在计算机的内存中,数据有2块,一块是堆,一块是栈(函数参数及局部变量在这里),而栈是从内存的高地址向低地转载 2014-08-23 09:04:32 · 5033 阅读 · 0 评论 -
sscanf函数
sscanf函数和正则表达式此文所有的实验都是基于下面的程序:char str[10];for (int i = 0; i 执行完后str的值为str = "!!!!!!!!!!"我们把str的每个字符都初始化为惊叹号,当str的值发生变化时,使用printf打印str的值,对比先前的惊叹号,这样就可以方便的观察str发生了怎样的变化。下面我们做几个小实验,看看使用转载 2014-08-20 16:15:03 · 918 阅读 · 0 评论