
C/C++
羽盛
做过windows下软件开发,数据库开发, 嵌入式开发。
目前主要在嵌入式开发领域。
展开
-
stl提供了三个最基本的容器
stl提供了三个最基本的容器:vector,list,deque。 vector和built-in数组类似,它拥有一段连续的内存空间,并且起始地址不变,因此 它能非常好的支持随即存取,即[]操作符,但由于它的内存空间是连续的,所以在中间 进行插入和删除会造成内存块的拷贝,另外,当该数组后的内存空间不够时,需要重新 申请一块足够大的内存并进行内存的原创 2008-02-27 15:57:00 · 567 阅读 · 0 评论 -
TTY 2
6.4.4 使用tcgetattr函数与tcsetattr函数控制终端为了便于通过程序来获得和修改终端参数,Linux还提供了tcgetattr函数和tcsetattr函数。tcgetattr用于获取终端的相关参数,而tcsetattr函数用于设置终端参数。这两个函数的具体信息如表6.2所示。表6.2 tcgetattr函数和tcsetattr函数头文件转载 2009-05-25 17:43:00 · 1199 阅读 · 1 评论 -
TTY 3
TTY 线路设置当一个用户要改变一个 tty 设备的线路设置或者获取当前线路设置, 他调用一个许多的不同 termios 用户空间库函数或者直接对这个tty 设备的节点调用 ioctl. tty 核心转换这 2 种接口为许多不同的 tty 驱动函数回调和 ioctl 调用.18.3.1. set_termios 函数大部分 termios 用户转载 2009-05-31 15:39:00 · 879 阅读 · 0 评论 -
strip
strip经常用来去除目标文件中的一些符号表、调试符号表信息,以减小程序的大小,在rpmbuild包的最后就用到。其支持的选项如下:>strip -h用法:strip 输入文件从文件中删除符号和节 选项为: -I --input-target= Assume input file is in format -O --output-target=原创 2009-06-03 16:02:00 · 1068 阅读 · 0 评论 -
关于换行符号,在SMS程序中进行解析时,在linux系统 windows系统的不同
关于换行符号,在SMS程序中进行解析时,在linux系统 windows系统的不同 linux: /n 0x0awindow: /r/n 0x0d 0x0a SMS通过GSM模块发送接收短信, 一般通过AT命令实现的。 在发送AT命令后解析返回的字符串,需要注意的是 windows:下0x0d 0x0a linux下:原创 2009-06-03 16:07:00 · 1873 阅读 · 0 评论 -
将PCM数据转换成WAV文件
转自: http://www.itgrass.com/a/cjj/C-jq/200812/06-9686.html将PCM数据转换成WAV文件1 perl脚本 在北大中文论坛看到一位网友问起怎样把大尾的PCM数据播放出来。我以前在工作中碰到过8K采样的PCM数据,当时不清楚wav文件的格式,正好perl模块中有个Audio::Wav模块可以写wav文件,就写了个perl脚本:原创 2009-06-11 16:22:00 · 3298 阅读 · 0 评论 -
Linux环境进程间通信: 共享内存
转自: http://www.ibm.com/developerworks/cn/linux/l-ipc/part5/index1.html 共享内存可以说是最有用的进程间通信方式,也是最快的IPC形式。两个不同进程A、B共享内存的意思是,同一块物理内存被映射到进程A、B各自的进程地址空间。进程A可以即时看到进程B对共享内存中数据的更新,反之亦然。由于多个进程共享同一块内存区域,必然需原创 2009-06-19 17:41:00 · 697 阅读 · 0 评论 -
CRTStartup windos
几 乎每个Windows下的C++程序员都应该知道main和WinMain,前者是控制台程序的入口函数,后者是Win32程序的入口函数。这些函数会在 静态初始化完毕后被调用,并且开始应用程序的主要工作。但是这些函数只不过是C/C++的入口函数,而不是应用程序真正的入口函数,也就是说,操作系统装载应用程序后,它并不是直接调用我们的main/WinMain,而是调用另一个由CRT提供的函数,由原创 2009-07-13 15:28:00 · 1451 阅读 · 0 评论 -
kernel_thread flags 参数
kernel_thread()函数用于创建一个内核线程,该函数的原型如下:pid_t kernel_thread(int (*fn)(void *), void *arg, unsigned long flags)flags参数是什莫?kernel_thread()这样调用do_fork():do_fork(flags|CLONE_VM|CLONE_UNT转载 2009-09-25 17:37:00 · 1674 阅读 · 0 评论 -
并行编程下Windows* 线程, OpenMP*, Intel® Threading Building Blocks的对比
并行编程下Windows* 线程, OpenMP*, Intel® Threading Building Blocks的对比 2009-03-30 10:08:35 作者:Peter Wang (Intel) 来源:http://software.intel.com 这是一个有意思的话题当我们计 划在多核系统下应用并行编程来最大化地利用处理器时,这意味着我们想把一个转载 2009-10-14 15:38:00 · 979 阅读 · 1 评论 -
c++单件实例模式的实现 及其多个单件子类
转至:http://www.cppblog.com/ElliottZC/archive/2007/07/20/28421.html 1. 意图 保证一个类仅有一个实例,并提供一个访问它的全局访问点。2. 动机 对一些类来说,只有一个实例是很重要的。虽然系统中可以有许多打印机,但却只应该有一个打印假脱机( printer spooler),只应该有一个文件转载 2010-01-25 10:23:00 · 1614 阅读 · 1 评论 -
IPHELPER windos
iphelper About IP HelperInternet Protocol Helper (IP Helper) assists network administration of the local computer by enabling applications to retrieve information about the network configu原创 2010-03-24 09:34:00 · 901 阅读 · 0 评论 -
SSH Client : putty 移植
项目中需要用的SSH Clinet, 就用下了个putty的开源代码, 对其进行了修改。代码可以在OpenSSH的网站下载www.openssh.org(开放源码的OpenSSH组织的网站)。 虽然原来的windos下的工程是用vc6创建的,但VS2005可以直接进行编译没问题。 VC6编译需要修改:1. 定义 #define SHGFP_TYPE_CURRE原创 2010-03-24 09:43:00 · 1508 阅读 · 1 评论 -
ar6k_ndis.lib(miniport.obj) : error LNK2001: unresolved external symbol NDIS_BUS_DRIVER
AR6000 FOR CE. 用PB6 编译DEVICEEMULATOR的设备时, 发现编译debug版本时ar6k_ndis.lib(miniport.obj) : error LNK2001: unresolved external symbol NDIS_BUS_DRIVER错误,而release版本就不会出错。 在catalog view 里我也没有选择AR6原创 2010-01-14 14:43:00 · 713 阅读 · 1 评论 -
cache工作原理
Cache的工作原理 1.Cache的引入 2.Cache的基本原理 Cache与主存都分成块(常常将Cache块说成Cache行),每块由多个字节组成,大小相等。在一个时间段内,Cache的某块中放着主存某块的全部信息,即Cache的某一块是主存某块的副本(或叫映像),转载 2010-06-09 10:11:00 · 4566 阅读 · 0 评论 -
解决Visual C++ 编译器中混合 .c 文件时收到 C1853 预编译头错误的方法
当项目中混合了 .cpp 和 .c 文件时,编译器会对它们采取不同的编译方式(主要是因为对函数声明的处理方式不同),因而不能共用一个预编译头文件。在 VC++ 中,默认的预编译头文件是针对 C++ 的 (stdafx.h 和 stdafx.cpp),当然也可以创建针对 C 的预编译头。转载 2010-09-25 10:08:00 · 765 阅读 · 0 评论 -
TTY 1
获得当前终端名称Linux系统中提供了ttyname函数,用于判断某个打开的文件描述符是否是某个终端设备。如果是,则返回终端设备的名称,该函数的具体信息如表6.1所示。表6.1 ttyname函数说明:ttyname函数用于返回终端的名称,其中fd为打开终端而获得文件描述符。表6.1 ttyname函数头文件转载 2009-05-25 17:41:00 · 1042 阅读 · 0 评论 -
编码转换
#include #define BUFLEN 200char inbuf[BUFLEN];char outbuf[BUFLEN];char* pin = inbuf;char* pout = outbuf;…打开文件,读入GB2312数据到inbuf,数据长度为 lenint inleft = len;int outleft = BUFLEN;转载 2009-05-21 10:42:00 · 538 阅读 · 0 评论 -
ISO C90 forbids mixed declarations and code
该警告, 是因为在 c语言 函数中, 变量的声明, 必须在执行语句之前,原创 2008-11-20 15:29:00 · 2600 阅读 · 0 评论 -
SendMessage 和 PostMessage
1. SendMessage函数要等到消息被处理后才返回 PostMessage 消息发出后马上返回 2. PostMessage发向目标窗口的消息一定会进入消息队列 SendMessage向同一线程的窗口发消息,不会进入消息队列, SendMessage向其他线程的窗口发消息,则会进入消息队列, 3. PostMessage的返回值表示P原创 2009-02-10 09:40:00 · 1061 阅读 · 0 评论 -
SendMessage 和 PostMessage 2
向一个窗口发消息, 需要根据windowname获得窗口句柄, 但是假如窗口的名字不固定, 会随着配置的变化而变化, 则根据windowname获得窗口句柄就不太可靠了, 如果用classname也不能获得句柄, 则可以通过EnumWindows,枚举窗口句柄 对得到的每个窗口句柄,发送消息, 这是一个变通的方法, 当然逻辑上有些有点影响效率。原创 2009-02-12 16:59:00 · 578 阅读 · 0 评论 -
printf 格式化
char c = 0xFE; printf("0x%2X/n", c ); //高四位是F时, 会显示多个 Freusult: 0xFFFFFE, printf("0x%2X/n", (unsigned char)c ); //高四位是F时, 先转化为(unsigned char)就正常reusult: 0xFE, long count原创 2009-03-06 13:12:00 · 1272 阅读 · 0 评论 -
一个简单的FIFO例子
#include #include #include #include #include #include int safe_fread(void *ptr, size_t size, size_t nmemb, FILE *stream){ size_t ret = 0; do { clearerr(stream); ret += fread((原创 2009-04-15 17:45:00 · 2018 阅读 · 0 评论 -
kill 、killall、pkill、xkill pgrep
终止一个进程或终止一个正在运行的程序,一般是通过 kill 、killall、pkill、xkill 等进行。比如一个程序已经死掉,但又不能退出,这时就应该考虑应用这些工具。另外应用的场合就是在服务器管理中,在不涉及数据库服务器程序的父进程的停止运行,也可以用这些工具来终止。为什么数据库服务器的父进程不能用这些工具杀死呢?原因很简单,这些工具在强行终止数据库服务器时,会让数据库产生更多的文转载 2009-04-21 10:03:00 · 722 阅读 · 0 评论 -
内核和用户空间共享内存的实现例程-proc和mmap
之所以想写这篇帖子,是有两个方面原因。其一是内核版有一个关于《内核可以从线性地址直接计算物理地址,用来做什么呢?》的讨论,偶说计算出物理地址可以共享给用户空间读写。dreamice兄说能否说一下详细的应用。其二是alb*版主提到wheelz曾经写过这样一个例程,拜读了一把,发现在传递物理地址和内存大小上,wheelz的例程还有些不够灵活。alb*版主提到可以通过文件的方式实现动态的传转载 2009-04-21 11:31:00 · 819 阅读 · 0 评论 -
Linux 用户态与内核态的交互——netlink 篇
[size=4]Linux 用户态与内核态的交互——netlink 篇[/size]作者:Kendo2006-9-3这是一篇学习笔记,主要是对《Linux 系统内核空间与用户空间通信的实现与分析》中的源码imp2的分析。其中的源码,可以到以下URL下载:http://www-128.ibm.com/developerworks/cn/linux/l-netlink/i转载 2009-04-21 10:57:00 · 636 阅读 · 0 评论 -
netlink socket编程之why & how
netlink socket编程之why & how 作者: Kevin Kaichuan He@2005-1-5 翻译整理:duanjigang @2008-9-15duanjigang1983@126.com>原文: http://www.linuxjournal.com/article/7356 开发和维护内核是一件很繁杂的工作,因此,只有那些最重要或者与系统性能息息转载 2009-04-21 11:50:00 · 717 阅读 · 0 评论 -
__setup 在内核中的作用
__setup(//做了一次完整的盗贼,我毫无修改的抄袭了一次,但有时间会做量身裁减的//from http://www.linuxforum.net/forum/printthread.php?Cat=&Board=linuxK&main=470221&type=thread关于__setup 在内核中的作用 问题::比如在printk.c有这样一句 __setup("co转载 2009-04-22 13:29:00 · 3197 阅读 · 0 评论 -
linux启动时挂载rootfs的几种方式
根文件系统(在样例错误消息中名为 rootfs)是 Linux 的最基本的组件。根文件系统包含支持完整的 Linux 系统所需的所有内容。它包含所有应用程序、配置、设备、数据等 Linux 中,rootfs 是必不可少的。PC 上主要实现有 ramdisk 和直接挂载 HD(Harddisk,硬盘)上的根文件系统;嵌入式中一般不从 HD 启动,而是从 Flash 启动,最简单的方转载 2009-04-22 13:26:00 · 1834 阅读 · 0 评论 -
7BIT 编码 长短信
5.5.4. UDH and Information ElementsUser Data Headers (UDH) are a very general framework used by binary SMS in GSM networks to transmit special binary data associated with the messa原创 2009-07-22 16:59:00 · 3001 阅读 · 0 评论 -
C6的工程转换为VS2008的工程后,编译找不到而且不能升级vc90.pdb文件的问题解决方法
把一个VC6的工程转换为VS2008的工程后,编译找不到而且不能升级vc90.pdb文件的问题解决方法问题描述:1>e:/vcomh264net/vcomh/vcomh264net2.0 1.0.25 av/video/videoproc.cpp: error C2471: cannot update program databasee:/vcomh264net/vcom转载 2009-07-28 10:59:00 · 929 阅读 · 0 评论 -
eCos与uC/OS-II内核实现的比较
=======================线程结构信息:eCos使用cyg_thread类表示线程,用cyg_thread_info结构存储线程信息,而UC/OS使用TCB结构表示任务=======================调度单位:eCos调度以线程为单位,状态有CREATING SUSPENDED RUNNING(包括准备运行和正在运行) SLEEPSET(包括S转载 2014-02-28 17:43:21 · 1266 阅读 · 0 评论