linux下的daemon进程
摘要:http://www.cublog.cn/u3/100661/showart_2091898.html#include <unistd.h>int daemon(int nochdir,int noclose)在创建精灵进程的时候,往往需要将精灵进程的工作目录修改为"/"根目录并且将标准输入,输出和错误输出重定向到/dev/nulldaemon的作用就是当参数nochdir为0时,将根目录修改为工作目录noclose为0时,做输入,输出以及错误输出重定向到/dev/null执行成功返回0错误返回-1<----------------------------
阅读全文
nothrow new和 new
摘要:普通new一个异常的类型std::bad_alloc。这个是标准适应性态。在早期C++的舞台上,这个性态和现在的非常不同;new将返回0来指出一个失败,和malloc()非常相似。在一定的环境下,返回一个NULL指针来表示一个失败依然是一个不错的选择。C++标准委员会意识到这个问题,所以他们决定定义一个特别的new操作符版本,这个版本返回0表示失败。一个nothow new语句和普通的new语句相似,除了它的变量将涉及到std::nothrow_t。Class std::nothrow_t在new将按照下面的方式来定义:class nothrow_t// in namespace std{}.
阅读全文
C/C++ 宏详解
摘要:http://tech.e800.com.cn/articles/2009/727/1248665385863_1.html 众多C++书籍都忠告我们C语言宏是万恶之首,但事情总不如我们想象的那么坏,就如同goto一样。宏有一个很大的作用,就是自动为我们产生代码。如果说模板可以为我们产生各种型别的代码(型别替换),那么宏其实可以为我们在符号上产生新的代码(即符号替换、增加)。关于宏的一些语法问题,可以在google上找到。相信我,你对于宏的了解绝对没你想象的那么多。如果你还不知道#和##,也不知道prescan,那么你肯定对宏的了解不够。我稍微讲解下宏的一些语法问题(说语法问题似乎不妥,mac
阅读全文
C++/C宏定义中## 连接符与# 符的含义
摘要:http://blog.163.com/wshyao@126/blog/static/1070451420081018103237836/## 连接符与# 符 ## 连接符号由两个井号组成,其功能是在带参数的宏定义中将两个子串(token)联接起来,从而形成一个新的子串。但它不可以是第一个或者最后一个子串。所谓的子串(token)就是指编译器能够识别的最小语法单元。具体的定义在编译原理里有详尽的解释,但不知道也无所谓。同时值得注意的是#符是把传递过来的参数当成字符串进行替代。下面来看看它们是怎样工作的。这是MSDN上的一个例子。 假设程序中已经定义了这样一个带参数的宏:#define p...
阅读全文
signal(SIGHUP, SIG_IGN)的含义
摘要:http://www.niuzhangpeng.com/?p=58signal(SIGHUP, SIG_IGN);signal信号函数,第一个参数表示需要处理的信号值(SIGHUP),第二个参数为处理函数或者是一个表示,这里,SIG_IGN表示忽略SIGHUP那个注册的信号。SIGHUP和控制台操作有关,当控制台被关闭时系统会向拥有控制台sessionID的所有进程发送HUP信号,默认HUP信号的action是 exit,如果远程登陆启动某个服务进程并在程序运行时关闭连接的话会导致服务进程退出,所以一般服务进程都会用nohup工具启动或写成一个 daemon。
阅读全文
使用gdb调试当前运行的程序
摘要:http://wiki.ubuntu.org.cn/index.php?title=%E7%94%A8GDB%E8%B0%83%E8%AF%95%E7%A8%8B%E5%BA%8F&variant=zh-hanshttp://blog.csdn.net/wfing/archive/2010/09/17/5890382.aspxhttp://blog.csdn.net/chenglian_999/archive/2009/11/15/4813469.aspx用gdb可以调试当前的程序的使用情况,读出他的参数。以下用一个简单的程序做为例子:来说明gdb的调试。第一步 编译一个死循环程序。/
阅读全文
Linux下Kill函数用法
摘要:http://www.cnblogs.com/winnxm/archive/2010/01/22/1654502.html[ KILL ]功能描述:用于向任何进程组或进程发送信号。1#include<sys/types.h>23#include<signal.h>45intkill(pid_tpid,intsig);67参数:pid:可能选择有以下四种1. pid大于零时,pid是信号欲送往的进程的标识。2. pid等于零时,信号将送往所有与调用kill()的那个进程属同一个使用组的进程。3. pid等于-1时,信号将送往所有调用进程有权给其发送信号的进程,除了进程1(
阅读全文
gdb 多线程调试
摘要:http://hi.baidu.com/hcq11/blog/item/9f5bfc6e696209d680cb4a25.htmlhttp://hi.baidu.com/litto/blog/item/759389dd198111375882dd1e.htmlhttp://blogold.chinaunix.net/u3/94700/showart_2389432.html <推荐阅读>先介绍一下GDB多线程调试的基本命令。 info threads 显示当前可调试的所有线程,每个线程会有一个GDB为其分配的ID,后面操作线程的时候会用到这个ID。 前面有*的是当前调试的线程。 t
阅读全文
关于“#ifdef __cplusplus” 和 " extern "C" "
摘要:http://hi.baidu.com/diablomt/blog/item/df45828ff343a419b31bbaed.htmlhttp://hujw0710.blog.163.com/blog/static/8797282200852841732308/http://hi.baidu.com/guoangang123/blog/item/0e0b483ead07363370cf6c5e.htmlhttp://hi.baidu.com/17cpp/blog/item/a46bfd13a4816e025aaf53f6.htmlhttp://www.cnblogs.com/stonecra
阅读全文
error: no matching function for call to ‘ptr_fun(<unresolved overloaded function type>)’
摘要:下面这段代码会报错:报错信息为error: no matching function for call to ‘ptr_fun(unresolved overloaded function type)#include algorithm#include cctype#include stringconst std::stringStrToUpper(std::string s){std::transform(s.begin(), s.end(), s.begin(),std::ptr_fun(std::toupper));return s;}SolutionExplicitly
阅读全文
去除C++String的首尾空格
摘要:#include <string>#include <algorithm>#include <functional>#include <cctype>using namespace std;inline string& ltrim(string &ss){ int (*pf)(int)=isspace; string::iterator p=find_if(ss.begin(),ss.end(),not1(ptr_fun(pf))); ss.erase(ss.begin(),p); return ss;}inline string
阅读全文
遵循placement new的用法规范
摘要:http://www.cppblog.com/fwxjj/archive/2006/12/03/15932.html标准的开始<new>由一个特别的操作符new来定义,这个就是我们熟知的placement new。和其他普通的new不同的是,它在括号里多了另外一个参数。比如:Widget * p = new Widget;//ordinary new //普通的new pi = new...
阅读全文
iconv 文件编码转换
摘要:http://qq164587043.blog.51cto.com/261469/63349linux shell 配置文件中默认的字符集编码为UTF-8 。UTF-8是unicode的一种表达方式,gb2312是和unicode都是字符的编码方式,所以说gb2312跟utf-8的概念应该不是一个层次上的。在LINUX上进行编码转换时,可以利用iconv命令实现,这是针对文件的,即将指定文件从一种...
阅读全文
gdb调试器命令学习总结笔记 stl printer
摘要:http://blog.csdn.net/sunlylorn/article/details/6788768GDB的自定义命令非常有用,通过自定义命令,直接操作容器中的数据,可以方便的查看STL容器中的数据。这个链接dbinit_stl_views是Dan C Marinescu写的查看STL容器的自定义命令(如果不适合你的STL版本的话,可以自行修改)。把它添加到你的.gdbinit中,就可以方便的查看STL容器了。它提供了查看vector,list,map,multimap,set,multiset,deque,stack,queue,priority_queue,bitset,strin
阅读全文
linux core 配置与调试
摘要:http://www.cppblog.com/loky/archive/2008/12/10/69106.html当我们的程序崩溃时,内核有可能把该程序当前内存映射到core文件里,方便程序员找到程序出现问题的地方。最常出 现的,几乎所有C程序员都出现过的错误就是“段错误”了。也是最难查出问题原因的一个错误。下面我们就针对“段错误”来分析core文件...
阅读全文