
linux下c++编程
文章平均质量分 70
风声边界
本人专注于linux下c 编程,php编程,qt编程,IOS编程,非诚勿扰
展开
-
linux gcc 的编译过程 详解
gcc的编译过程分为四步,分别为:(1)预编译 (Pre-Processing)(2)编译 (Compiling)(3)汇编 (Assembling)(4)链接 (Linking)以hello.c为例说明:#includeint main(void){ printf("Hello World!"); return 0;}(1)预编译阶段 (Pre-Processing) 在该阶段,编译器将上原创 2010-01-19 20:29:00 · 1180 阅读 · 0 评论 -
class 之间嵌套使用 c++ 字段 不完全类型
a.h:----------------------------------------#ifndef __A_H#define __A_Hclass CB;class CA{public: CA(){n = 2;} ~CA(){} void show(CB aCb); void show(void);public: int n; };#endif-------------原创 2010-05-10 14:05:00 · 3294 阅读 · 0 评论 -
map和vector删除元素的区别
经常使用map和vector,但是没有深入研究 map.erase(iter);//没有返回值map.erase(iter->first);//有返回值成功返回1,失败返回0 vector没有下面的删除方式vector.erase(*iter); 从map和vector中删除元素时有所不同for(iter = m_MapSocket.begin();iter !原创 2010-05-10 10:50:00 · 2212 阅读 · 0 评论 -
linux 编写服务程序
<br />以前我们在看《unix环境高级编程》的时候,有专门的整章详细介绍如何编写一个后台daemon程序(精灵程序),主要涉及到创建会话组,切换工作目录,设置文件屏蔽字,关闭不必要的描述符等多个操作。这些操作对于每一个后台程序来说都是类似的。<br />在Linux中专门提供了一个函数来完成这个daemon化的过程,这个函数的原型如下int daemon (int __nochdir,int __noclose);<br />如果__nochdir的值为0,则将切换工作目录为根目录;如果__noclos原创 2010-06-12 16:03:00 · 3929 阅读 · 3 评论 -
linux下服务程序测试
<br />我写了一个服务程序:main.c<br />#include <unistd.h><br />#include <time.h><br />#include <stdio.h><br />#include <signal.h><br />#include <string.h><br />//是否停止服务程序的标识<br />int nStop = 1;<br /><br />void sig_term(int anSigno)<br />{<br /> nStop = 0;<br />原创 2010-06-12 16:58:00 · 975 阅读 · 0 评论 -
codeblocks 中文
心结: 为了在codeblocks下创建的C++工程中使用mysql,辛辛苦苦忙活了半个下午,终于长舒一口气,搞定了,编译成功。 其中不乏数次的成功于失败的反复。个中滋味,只有让我有擂头顿足的冲动。 不过,还算上天公平,问题终究还是解决了。 趁着刻骨铭心的痛苦还没有消失殆尽,赶快把过程记录于此。权慰数小时之功,且备来时之用。----------------------------------------------------- 记录: 为使用mysql配置codeblocks转载 2010-08-21 10:31:00 · 3792 阅读 · 0 评论 -
linux下libpcap 获取当前主机的网卡信息
<br /> libpcap(Packet Capture Library),即数据包捕获函数库。在网络包抓取中libpcap是非常常用的一个库,著名的tcpdump就是用它来实现的。libpcap是一个 与实现无关的访问操作系统所提供的分组捕获函数库,用于访问数据链路层。这个库为不同的平台提供了一致的C函数编程接口,在安装了 libpcap 的平台上,以 libpcap 为接口写的程序、应用,能够自由地跨平台使用。它支持多种操作系统。 <br />l ibpcap 结构简单,使用方便;它提供了转载 2010-08-30 10:02:00 · 3599 阅读 · 0 评论 -
由进程ID 查看进程状态
int checkState(unsigned aPid){ char cPidBuff[100]; memset(cPidBuff,0,sizeof(cPidBuff)); sprintf(cPidBuff,"/proc/%d/status",aPid); ifstream fin(cPidBuff); string s; int nRet = -1; while(ge原创 2010-11-02 11:56:00 · 3731 阅读 · 1 评论 -
c++ trim function string
<br />#include <iostream><br />#include <vector><br />#include <string><br /> <br />using namespace std;<br /> <br />string& trim(string &str);<br />string& ltrim(string &str);<br />string& rtrim(string &str);<br /> <br />int main(int argc, char *argv[])<b转载 2010-11-03 08:46:00 · 1337 阅读 · 0 评论 -
inet_aton inet_addr inet_work 函数比较
<br />#include<unistd.h><br />#include<stdio.h><br />#include<stdlib.h><br />#include<string.h><br />#include<netinet/in.h><br />#include<sys/socket.h><br />#include<sys/types.h><br />#include<arpa/inet.h><br />int main()<br />{<br /> char str[]="25转载 2010-11-12 13:53:00 · 903 阅读 · 0 评论 -
inet_ntoa 连续使用 注意事项
<br />今天在向同学show的时候,发现了了我打印源ip和目的ip都是一样的,晕,幸亏同学都没有发现。<br />回来当然要改程序了。<br />inet_ntoa()<br />简述:<br /> 将网络地址转换成“.”点隔的字符串格式。<br /> char * inet_ntoa( struct in_addr in);<br /> in:一个表示Internet主机地址的结构。<br /> The inet_ntoa() function converts the I转载 2010-11-18 09:11:00 · 1530 阅读 · 0 评论 -
c++ 继承 函数重新实现
<br />parent.h:class Parent{public: Parent(); void show(int n); void show(char * p);};parent.cpp:void Parent::show(int n){ cout<<"In Parent:"<<n<<endl;}void Parent::show(char *p){ cout<<"In Pa原创 2011-03-24 20:22:00 · 1411 阅读 · 0 评论 -
使用ZLib 压缩/解压缩 zip文件
实际应用中有时候会遇到需要处理 ZIP 压缩解压的情况,这时候我们有大概三种选择:调用 rar.exe, unzip.exe 等使用某现成库完全手写第一种虽然能完成任务,但是没法知晓结果。曾经有人对说,可以抓命令行输出结果来判断……这种依靠界面文字来进行精确判断的行为个人认为相当不靠谱。第三种,既然我是个“造轮主义”者,当然说好,但是现在我不了解 ZIP 格式,也不了解 ZIP 算法,所以这个日后再说。今天我们就来切切实实地用一次轮子。ZIP 相关的库中比较有名的可能就是 ZLib 和 InfoZip(un转载 2011-05-14 08:11:00 · 10036 阅读 · 2 评论 -
inet_ntoa使用时要注意
in_addr t1,t2;t1.S_un.S_addr=1;t2.S_un.S_addr=2;char *p1=inet_ntoa(t1);char *p2=inet_ntoa(t2);这样你只能的得到2个相同的结果因为它们用的是同一块空间。解决办法是每次调用后都把值考走如:char p1[20]={0};strcpy(p1,inet_ntoa(t1));这样处理就没问题了转载 2010-04-09 17:38:00 · 965 阅读 · 0 评论 -
linux下判断路径是否存在(文件夹是否存在)
#include#include#include#include#includeusing namespace std;int main(void){ char buff[] = "/home/whc/test2/"; //1 opendir() and closedir DIR *dir=NULL; dir = opendir(buff); if(NULL == dir) cout els转载 2010-04-13 11:23:00 · 15940 阅读 · 1 评论 -
c++中的explicit关键字
c++中的explicit关键字用来修饰类的构造函数,表明该构造函数是显式的,既然有"显式"那么必然就有"隐式",那么什么是显示而什么又是隐式的呢?如果c++类的构造函数有一个参数,那么在编译的时候就会有一个缺省的转换操作:将该构造函数对应数据类型的数据转换为该类对象,如下面所示: class MyClass{public:MyClass( int num );}....MyClass转载 2010-03-26 13:59:00 · 655 阅读 · 0 评论 -
TCP/IP编程中协议无关性的函数getaddrinfo()
一、getaddrinfo函数介绍: gethostbyname和gethostbyaddr这两个函数仅仅支持IPv4,getaddrinfo函数能够处理名字到地址以及服务到端口这两种转换,返回的是一个sockaddr结构的链表而不是一个地址清单。这些sockaddr结构随后可由套接口函数直接使用。如此以来,getaddrinfo函数把协议相关性安全隐藏在这个库函数内部。应用程序只要处理由ge转载 2010-02-03 09:33:00 · 1047 阅读 · 0 评论 -
Linux下c++编程与kdevelop的环境配置
KDevelop是一个支持多程序设计语言的集成开发环境。它运行于Linux和其它类unix环境。 KDevelop本身不包含编译器,而是调用其它编译器来编译程序。 1.打开新立得软件包管理器 2.查找KDevelop,在结果中当然是勾选KDevelop,还有KDevelop系列里面那个带"-dev"后缀的包,当然你可以不勾 3.装好前面的包后安装如下的包: autom转载 2010-03-02 19:59:00 · 3572 阅读 · 0 评论 -
linux下定时执行计划任务
linux下定时执行计划任务查看/etc/crontab文件SHELL=/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=rootHOME=/# run-parts01 * * * * root run-parts /etc/cron.hourly02 4 * * * root run-parts /etc/cron.d转载 2010-03-02 14:39:00 · 923 阅读 · 0 评论 -
例行性命令-crontab
crontab -e 是针对用户的cron来设计的,如果是系统的例行性任务,该怎么办?是否还是需要以crontab -e来管理例行性命令?当然不需要,您只需要编辑/etc/crontab文件就可以了。需要注意的是:crontab -e的作用其实是/usr/bin/crontab这个执行文件,但是/etc/crontab是个纯文本文件,可以root的身份编辑这个文件。转载 2010-03-01 14:00:00 · 885 阅读 · 0 评论 -
linux 隐式调用 自己写的动态库
~/test|||------main.c|------lib| || |------StringLen.h| |------Strlen.c| |------Strnlen.c----------------StringLen.h:#ifndef _STRINGLEN_H__#define _转载 2010-03-02 15:53:00 · 2160 阅读 · 0 评论 -
linux 显式调用 自己写的动态库
~/test|||------main.c|------lib| || |------StringLen.h| |------Strlen.c| |------Strnlen.c----------------StringLen.h:#ifndef _ST转载 2010-03-02 16:12:00 · 1567 阅读 · 0 评论 -
linux 下动态库、静态库嵌套使用
linux下静态库嵌套使用前提是你会在linux下调用静态库和动态库和Makfile编程(当然不会Makfile直接在终端命令也成)本例是先由StringLen.h,StringLen.c生成librak.a然后利用StringLen2.h,StringLen2.并调用librak.a生成librak2.a最后利用StringLen3.h,StringLen3.c调用libra原创 2010-03-11 09:45:00 · 2530 阅读 · 0 评论 -
vim + cscope 使用
1. vim的准备首先 vim --version | grep cscope,看看vim是否支持cscope,如果不支持需要重新安装vim。最简单的是在. /configure 后加上-enable-cscope,当然可以在Makefile文件(./src/Makefile)中修改(把原来的注释去掉),这是最根本的:CONF_OPT_CSCOPE = --enable-cscope然转载 2010-03-16 09:13:00 · 1276 阅读 · 0 评论 -
linux getpwuid 得到指定用户信息
和系统数据相关的passwd 结构和系统数据相关的一个结构passwd定义如下/* The passwd structure. */struct passwd{ char *pw_name; /* 用户名*/ char *pw_passwd; /* 密码.*/ __uid_t pw_uid; /* 用转载 2010-03-19 10:03:00 · 8614 阅读 · 1 评论 -
linux struct utsname 结构详解是utsname 函数使用说明
【uname系统调用】 功能描述: 获取当前内核名称和其它信息。用法: #include extern int uname (struct utsname *__name) __THROW;参数: __name:指向存放系统信息的缓冲区,原型如下struct utsname { char sysname[_UTSNAME_SYSNAME_LENGTH];//当前操作系统名 char node转载 2010-03-19 09:08:00 · 6610 阅读 · 0 评论 -
makefile 路径设置
本文转自:http://weihuachao1984.blog.163.com/blog/static/328712862009510105226885/ 开始接触Makefile已经有好几个月了,最近想好好学习学习但是一个简单的问题就卡壳了很简单的一个问题|-- Makefile|-- include| `-- hello.h`-- src |-- hello.cpp转载 2010-01-06 14:06:00 · 22900 阅读 · 2 评论 -
linux 下 raknet 生成静态库和动态库
测试环境是ubuntu首先从http://www.jenkinssoftware.com/index.html 下载RakNet-3.7....tar.gz解压压缩文件并进入.../Source目录编译成静态库和动态库有两种方式1,传统的linux生成静态库和动态库方式 静态库 如果是多个.cpp文件 @1:g++ -c *.cpp @2原创 2010-01-09 11:23:00 · 2609 阅读 · 1 评论 -
libevent 第一章 设置libevent
原文地址:翻译:Libevent参考手册第一章:设置libevent作者:一剑震九州翻译自:http://www.wangafu.net/~nickm/libevent-book/Ref1_libsetup.htmllibevent有一些被整个进程共享的、影响整个库的全局设置。必须在调用libevent库的任何其他部分之前修改这些设置,否则,libevent会进入不一致的状转载 2011-12-21 21:29:32 · 1594 阅读 · 0 评论