![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
文章平均质量分 72
yufangbo
从事安防行业软硬件开发,很乐于结交更多的本行业人事。
展开
-
Linux下多线程编程详解
线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期,solaris是这方面的佼佼者。传统的Unix也支持线程的概念,但是在一个进程(process)中只允许有一个线程,这样多线程就意味着多进程。现在,多线程技术已经被许多操作系统所支持,包括Windows/NT,当然,也包括Linux。 为什么有了进程的概念后,还要再引入线程呢?使用多线程到底有哪些转载 2009-03-27 14:02:00 · 1079 阅读 · 2 评论 -
Linux 常用C函数说明-接口处理篇(3)
ntohl(将32位网络字符顺序转换成主机字符顺序) 相关函数 htonl,htons,ntohs 表头文件 #include 定义函数 unsigned long int ntohl(unsigned long int netlong); 函数说明 ntohl()用来将参数指定的32位netlong转换成主机字符顺序。 返回值 返回对应的主机字符顺序。 范例 参考getserve转载 2009-03-30 18:01:00 · 508 阅读 · 0 评论 -
Linux C 函数参考
必备资源:http://download.csdn.net/source/224569转载 2009-03-30 17:50:00 · 423 阅读 · 0 评论 -
gcc 参数
gcc and g++分别是gnu的c & c++编译器 gcc/g++在执行编译工作的时候,总共需要4步1.预处理,生成.i的文件[预处理器cpp]2.将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs]3.有汇编变为目标代码(机器代码)生成.o的文件[汇编器as]4.连接目标代码,生成可执行程序[链接器ld][参数详解](工作中常用的) -c只激活预处理,编译,和汇编,转载 2009-04-17 15:23:00 · 643 阅读 · 0 评论 -
static C
1. static 变量静态变量的类型 说明符是static。静态变量当然是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量。 例如外部变量虽属于静态存储方式,但不一定是静态变量,必须由 static加以定义后才能成为静态外部变量,或称静态全局变量。2. 静态局部变量静态局部变量属于静态存储方式,它具有以下特点:(1)静态局部变量在函数内定义它的生存期为整个源程序,但是转载 2009-04-17 15:34:00 · 1454 阅读 · 0 评论 -
什么叫硬件流控制
串口通讯流控制我们在串行通讯处理中,常常看到RTS/CTS和XON/XOFF这两个选项,这就是两个流控制的选项,目前流控制主要应用于调制解调器的数据通讯中,但对普通RS232编程,了解一点这方面的知识是有好处的。那么,流控制在串行通讯中有何作用,在编制串行通讯程序怎样应用呢?这里我们就来谈谈这个问题。 1.流控制在串行通讯中的作用这里讲到的“流”,当然指的是数据流。数据在两个串口之间传输时,常转载 2009-04-17 15:42:00 · 2418 阅读 · 1 评论 -
LINUX下SOCKET连接
1)connect超时:1)setsockopt();//将socket置为非阻塞模式;2)connect();3)判断connect()的返回值,一般情况会返回-1,这时你还必须判断错误码如果是EINPROGRESS,那说明connect还在继续;如果错误码不是前者那么就是有问题了,不必往下执行,必须关掉socket;待下次重联;4)select();设置好函数中的超时时间,将select()中转载 2009-04-17 15:49:00 · 670 阅读 · 0 评论 -
处理僵尸进程
前几天,连续四天,让控制器晚上跑着,第二天早上去看,shell挂掉了,其他进程都还好好的,细细用PS命令看,发现一个进程后跟着一个"僵尸"的shell ... 125 685 S monitor126 Z [sh]..转载 2009-04-17 15:52:00 · 674 阅读 · 0 评论 -
TIME 函数 LINUX
asctimectimegettimeofdaygmtimelocaltimemktimesettimeofdaytimeasctime(将时间和日期以字符串格式表示) 相关函数 time,ctime,gmtime,localtime 表头文件 #include 定义函数 char * asctime(const struct tm * timeptr); 函数说明 asctime()将参转载 2009-04-17 15:25:00 · 602 阅读 · 0 评论 -
将socket设置为非阻塞(non-blocking)(
在CSDN上看到一个很短的文章,虽然我没有遇到过这个的问题,不过感觉有必要记记,所以摘过来了有一个非常有迷惑性的做法是:u_long has = 1;ioctl(m_sock, FIONBIO , &has);这个函数会非常无耻的返回你success,但是它实际上很可能什么也没做。正确的做法应该是使用fcntl:int flags = fcntl(m_sock, F_GETFL, 0);fcn转载 2009-04-17 15:44:00 · 3168 阅读 · 0 评论 -
Linux下Socket编程
络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。Socket也具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。什么是Socket Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序转载 2009-04-17 15:50:00 · 397 阅读 · 0 评论 -
再谈僵尸进程
昨天,好好看了看有僵尸进程模块的代码,发现调用POPEN后还是有PCLOSE关掉的,可为什么还有那个SHELL"僵尸"掉呢,实在搞不懂,今晚,做是实验:#include #include #include #include void set_STIMER(int s1) { struct itimerval value1; if (s1 > 0) { va转载 2009-04-17 15:51:00 · 698 阅读 · 0 评论 -
监视模块启动的SHELL
以前是用进程来做的,现在用SHELL来做,目的:把引导文件离要启动的模块实时监测已启动的进程里有没有如果没有,则启动while sleep 10do grep /& /prog/init/run.sh|awk -F"#./" {print $1}|grep /&|awk -F"&" {print $1}>runmodule aa=`grep -c ./ runmodule` x原创 2009-04-17 15:39:00 · 494 阅读 · 0 评论 -
Linux下Socket连接超时的一种实现方法
目前各平台通用的设置套接字(Socket)连接超时的办法是:创建套接字,将其设置成非阻塞状态。 调用connect连接对端主机,如果失败,判断当时的errno是否为EINPROGRESS,也就是说是不是连接正在进行中,如果是,转到步骤3,如果不是,返回错误。 用select在指定的超时时间内监听套接字的写就绪事件,如果select有监听到,证明连接成功,否则连接失败。转载 2009-04-17 15:46:00 · 748 阅读 · 0 评论 -
C编程实现http协议
2009-03-25 11:45大家都很熟悉HTTP协议的应用,因为每天都在网络上浏览着不少东西,也都知道是HTTP协议是相当简单的。每次用thunder之类的下载软件下载网页,当用到那个“用thunder下载全部链接”时总觉得很神奇。后来想想,其实要实现这些下载功能也并不难,只要按照HTTP协议发送request,然后对接收到的数据进行分析,如果页面上还有href之类的链转载 2009-04-18 19:23:00 · 877 阅读 · 0 评论 -
linux C 字符集转换,UTF-8,GB2312
最近帮朋友写个系统接口的小东东,2个系统字符集不同,一个采用UTF-8,一个采用GB2312,不得已需要转换字符集。转换函数记录如下:#include #include #include #include #define OUTLEN 255main(){ char *in_utf8 = "utf8字符串"; char *in_gb2312 = "/xbe/转载 2009-07-14 11:55:00 · 1492 阅读 · 0 评论 -
Linux环境进程间通信系列(二):信号
1. 信号(上)linux信号机制远远比想象的复杂,本文力争用最短的篇幅,对该机制做了深入细致的分析。读者可以先读一下信号应用实例(在信号(下)中),这样可以对信号发送直到相应的处理函数执行完毕这一过程有个大致的印象。本文尽量给出了较新函数的应用实例,着重说明这些的功能。一、信号及信号来源信号本质 信号是在软件转载 2009-07-20 16:23:00 · 903 阅读 · 1 评论 -
Linux环境进程间通信系列(三):消息队列
消息队列本系列文章中的前两部分,我们探讨管道及信号两种通信机制,本文将深入第三部分,介绍系统 V 消息队列及其相应 API。消息队列(也叫做报文队列)能够克服早期unix通信机制的一些缺点。作为早期unix通信机制之一的信号能够传送的信息量有限,后来虽然POSIX 1003.1b在信号的实时性方面作了拓广,使得信号在传递信息量方面有了转载 2009-07-20 16:26:00 · 509 阅读 · 0 评论 -
Linux 的多线程编程的高效开发经验
级别: 中级杨 奕 (yangyish@cn.ibm.com), 软件工程师, IBM贺 皓 (haohe@cn.ibm.com), 软件工程师, IBM张 俊伟 (zhjunwei@cn.ibm.com), 软件工程师, IBM2009 年 4 月 23 日本文中我们针对 Linux 上多线程编程的主要特性总结出 5 条经验,用以改善 Linux转载 2009-07-18 11:41:00 · 437 阅读 · 0 评论 -
深刻理解Linux进程间通信(IPC)
序 Linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的。而对Unix发展做出重大贡献的两大主力AT&T的贝尔实验室及BSD(加州大学伯克利分校的伯克利软件发布中心)在进程间通信方面的侧重点有所不同。前者对Unix早期的进程间通信手段进行了系统的改进和扩充,形成了“system VIPC”,通信进程局限在单个计算机内;后者则跳过了该限制,形成了基于转载 2009-07-20 16:19:00 · 555 阅读 · 1 评论 -
Linux环境进程间通信系列(五):共享内存
共享内存(上)共享内存可以说是最有用的进程间通信方式,也是最快的IPC形式。两个不同进程A、B共享内存的意思是,同一块物理内存被映射到进程A、B各自的进程地址空间。进程A可以即时看到进程B对共享内存中数据的更新,反之亦然。由于多个进程共享同一块内存区域,必然需要某种同步机制,互斥锁和信号量都可以。采用共享内存通信的转载 2009-07-20 16:31:00 · 502 阅读 · 0 评论 -
Linux环境进程间通信
本系列文章中的前两部分,我们探讨管道及信号两种通信机制,本文将深入第三部分,介绍系统 V 消息队列及其相应 API。消息队列(也叫做报文队列)能够克服早期unix通信机制的一些缺点。作为早期unix通信机制之一的信号能够传送的信息量有限,后来虽然POSIX1003.1b在信号的实时性方面作了拓广,使得信号在传递信息量方面有了相当程度的改进,但是信号这种通信方式更像"即时"的通信转载 2009-07-18 11:30:00 · 403 阅读 · 0 评论 -
Linux 多线程应用中如何编写安全的信号处理函数
级别: 中级周 婷 (zhouting@cn.ibm.com), 软件工程师, IBM 中国软件开发技术实验室刘 坚 (liujsh@cn.ibm.com), 软件工程师, IBM, Software Group唐 桂峰 (tangguif@cn.ibm.com), 资深软件工程师, IBM2009 年 6 月 18 日关于代码的可重入性,设计开发人转载 2009-07-18 11:39:00 · 610 阅读 · 0 评论 -
Linux环境进程间通信系列(一):管道及有名管道
在本系列序中作者概述了 linux 进程间通信的几种主要手段。其中管道和有名管道是最早的进程间通信机制之一,管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。 认清管道和有名管道的读写规则是在程序中应用它们的关键,本文在详细讨论了管道和有名管道的通信机制的基础上,用实例对其读写规则进行了程序验证,这转载 2009-07-20 16:20:00 · 617 阅读 · 0 评论 -
Linux环境进程间通信系列(四):信号灯
信号灯信号灯与其他进程间通信方式不大相同,它主要提供对进程间共享资源访问控制机制。相当于内存中的标志,进程可以根据它判定是否能够访问某些共享资源,同时,进程也可以修改该标志。除了用于访问控制外,还可用于进程同步。一、信号灯概述信号灯与其他进程间通信方式不大相同,它主要提供对进程间共享资源访问控制机制。相当于内存中的标志,进程可以根据它判定是否能够访问转载 2009-07-20 16:28:00 · 394 阅读 · 0 评论 -
浅谈 Linux 内核开发之 PCI 设备驱动
级别: 初级赵 昊翔 (haoxiang@hotmail.com), 软件工程师, Cisco Systems2009 年 6 月 11 日本文介绍了 PCI 的基本概念,并从 Linux 内核的角度出发,介绍了 PCI 设备的初始化以及配置。PCI 介绍随着计算机应用的不断更新和发展(比如百兆网卡、视屏流等),计算机内数据传输的带宽要求越来越高,传转载 2009-07-18 11:40:00 · 854 阅读 · 0 评论 -
Linux 进程管理剖析
创建、管理、调度和销毁文档选项<trvalign="top"><img alt="" height="1" width="8"src="//www.ibm.com/i/c.gif"/><img alt="" width="16"height="转载 2009-07-18 11:42:00 · 579 阅读 · 0 评论 -
Linux环境进程间通信系列(六):套接口
套接口在本专题的前面几个部分,如消息队列、信号灯、共享内存等,都是基于Sys V的IPC机制进行讨论的,它们的应用局限在单一计算机内的进程间通信;基于BSD套接口不仅可以实现单机内的进程间通信,还可以实现不同计算机进程之间的通信。本文将主要介绍BSD套接口(sockets),以及基于套接口的重要而基本的API。一个套接转载 2009-07-20 16:37:00 · 538 阅读 · 0 评论 -
Linux 内核的文件 Cache 管理机制介绍
文件 Cache 管理是 Linux 内核中一个很重要并且较难理解的组成部分。本文详细介绍了 Linux 内核中文件 Cache 管理的各个方面,希望能够对开发者理解相关代码有所帮助。1 前言自从诞生以来,Linux 就被不断完善和普及,目前它已经成为主流通用操作系统之一,使用得非常广泛,它与 Windows转载 2009-07-20 16:39:00 · 469 阅读 · 0 评论 -
跟我一起写 Makefile
陈皓 概述——什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果转载 2009-07-20 17:01:00 · 524 阅读 · 0 评论 -
fedora 下mysql 开发
如果你在FEDORA下开发,编译不通过,有可能是缺乏开发支持,你可以运行以下命令安装:yum install mysql-devel 编译:gcc -g testmysql.c -lz /usr/lib/mysql/libmysqlclient.so.15 -o testmysql /* Simple C program that connects to MySQL Dat原创 2009-05-11 18:01:00 · 513 阅读 · 0 评论 -
C语言嵌入式系统编程修炼之道
function StorePage(){d=document;t=d.selection?(d.selection.type!=None?d.selection.createRange().text:):(d.getSelection?d.getSelection():);void(keyit=window.open(http://www.365key.com/sto转载 2009-05-14 10:02:00 · 719 阅读 · 0 评论 -
Linux下C语言编程基础知识
这篇文章介绍在LINUX下进行C语言编程所需要的基础知识。在这篇文章当中,我们将会学到以下内容: 源程序编译 Makefile的编写 程序库的链接 程序的调试 头文件和系统求助 1.源程序的编译 在Lin转载 2009-05-22 14:26:00 · 460 阅读 · 0 评论 -
使用make
第五章:使用make []什么是make? Unix(Linux)是一个天生的开发平台,我为此感到高兴.make是一个强力的工具.它能自动跟踪相互依赖的源代码块并组成一程序,使得很容易建立一可执行程序.Make就是这种有依赖关系的部分和代码之间所作的规格说明. [] 所有的程序都要使用make? 是的.尽管你只有几个简单的模块,但转载 2009-05-22 16:00:00 · 435 阅读 · 0 评论 -
如何在C语言中巧用正则表达式
看到大家讨论这方面的东西,作点贡献聊表各位高手对这个版快的无私奉献 :oops: 如果用户熟悉Linux下的sed、awk、grep或vi,那么对正则表达式这一概念肯定不会陌生。由于它可以极大地简化处理字符串时的复杂度,因此现在已经在许多Linux实用工具中得到了应用。千万不要以为正则表达式只是Perl、Python、Bash等脚本语言的专利,作为C语言程序员,用户同样可以在自转载 2009-07-31 15:35:00 · 608 阅读 · 0 评论 -
C语言正则表达式的几个函数
1.int regcomp (regex_t *compiled, const char *pattern, int cflags) 这个函数把指定的正则表达式pattern编译成一种特定的数据格式compiled,这样可以使匹配更有效。函数regexec 会使用这个数据在目标文本串中进行模式匹配。执行成功返回0。 regex_t 是一个结构体数据类型,用来存放编译后的正则表转载 2009-07-31 15:50:00 · 1071 阅读 · 0 评论 -
Linux 下socket超时(connect超时/recv超时)
connect超时:目前各平台通用的设置socket connect超时的办法是通过select(),具体方法如下:1.建立socket;2.将该socket设置为非阻塞模式;3.调用connect();4.使用select()检查该socket描述符是否可写;5.根据select()返回的结果判断connect()结果;6.将socket设回阻塞模式。下面给出原创 2009-07-31 18:14:00 · 3110 阅读 · 0 评论 -
编程珠玑番外篇-C.正则表达式精义-1
很多天前和 zuola 聊天, 偶然提到正则表达式, zuola 说,会正则表达式的都是牛人. 我说, 其实不难, 买本书看看就会了. 这几天, zuola 又在我博客上留言说会正则表达式才是真的程序员,因此我想, 还是写篇比较浅显的教程, 让 zuola 同学快速成为牛人吧.对于普通人来说, 正则表达式是比较难的. 从我个人的体验来看也是一样. 这个难, 主要在于两方面: 1.转载 2009-07-31 15:58:00 · 1148 阅读 · 0 评论 -
TinyXml总结
一、 TinyXml的特点TinyXml是一个基于DOM模型的、非验证的轻量级C++解释器。1. SAX和DOM目前XML的解析主要有两大模型:SAX和DOM。其中SAX是基于事件的,其基本工作流程是分析XML文档,当发现了一个新的元素时,产生一个对应事件,并调用相应的用户处理函数。这种方式占用内存少,速度快,但用户程序相应得会比较复杂。而DOM转载 2009-05-27 17:50:00 · 490 阅读 · 0 评论 -
TinyXML 指南一
译注:本文是TinyXML 2.5.2版本Tutorial的中文译文,经原作者Lee Thomason同意由hansen翻译,如有误译或者错漏,欢迎指正。版权:版权归原作者所有,翻译文档版权归本人hansen所有,转载请注明出处。原文:http://www.grinninglizard.com/tinyxmldocs/tutorial0.htmlTinyXML 指南转载 2009-05-27 17:51:00 · 394 阅读 · 0 评论