自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 资源 (26)
  • 问答 (1)
  • 收藏
  • 关注

原创 linux环境下的守护进程编写

(一)  概念守护进程也成精灵进程(daemon),是一种运行在后台并且伴随着系统运行的整个周期的进程。守护进程一般是用来维护一些日常的事物活动的程序。比如用来侦听系统网络接口,以便取得来自网络的对各种网络服务进程的请求的Xinted进程,用来在制定的日期和时间执行制定命令的cron进程。(二)  编程规则(1)调用umask()将文件模式创建屏蔽字设置为0,由继承得来的文件模式创建屏

2013-05-31 00:01:20 638

原创 创建一个孤儿进程组

#include #include #include #include static void sig_hup(int signo) { printf("SIGHUP received, pid = %d\n", getpid()); } static void pr_ids(char* name){ printf("%s: pid = %d,

2013-05-30 23:26:27 766

原创 进程关系之进程组、会话和控制终端

1. 进程组每个进程除了有一个进程ID之外,还有一个进程组。进程组是一个或多个进程的集合。它们与同一作业相关联,可以接受来自同一终端的各种信号。每个进程组都有唯一的进程组ID。函数getpgrp可以得到进程的进程组ID。pid_t getpgrp(void);每个进程组都可以有一个组长进程。组长进程的标识是,其进程组ID等于进程ID。组长进程可以创建一个进程组,创建该组中的

2013-05-30 22:22:08 600

原创 设置缓冲区类型函数分析

设置缓冲区类型的函数主要有: #include void setbuf(FILE *stream, char *buf); void setbuffer(FILE *stream, char *buf, size_t size); void setlinebuf(FILE *stream); int setvbu

2013-05-29 23:26:12 1302

原创 配置GDB以支持查看stl容器数据

1. 下载 http://www.yolinux.com/TUTORIALS/src/dbinit_stl_views-1.03.txt   2. #cat dbinit_stl_views-1.03.txt >> ~/.gdbinit   3. 若正处于gdb中,运行命令:    (gdb) source ~/.gdbinit   4. 例如,如下代码: bugging.

2013-05-26 13:20:17 1035

原创 vim基本模式

vim是一个多模式的编辑器。就目前来看,主要有以下几个主要模式。1.通常模式(n) 在其它任何一个模式下,用ESC或者 ctrl+c 键可以退到通常模式2.插入模式(i) 在这个模式下,vim像一个常见的编辑器.在通常模式下,用i或者a可以进行本模式,当然,还有一些其它命令也可以.3.可视模式(v) 在这个模式下,可以使用hjkl进行选择.然后进行copy,paste或者其

2013-05-26 12:53:43 654

原创 关于linux 僵尸进程

僵尸进程是指的父进程已经退出,而该进程dead之后没有进程接受,就成为僵尸进程.(zombie)进程   怎样产生僵尸进程的:   一个进程在调用exit命令结束自己的生命的时候,其实它并没有真正的被销毁,而是留下一个称为僵尸进程(Zombie)的数据结构(系统调用 exit,它的作用是使进程退出,但也仅仅限于将一个正常的进程变成一个僵尸进程,并不能将其完全销毁)。   在

2013-05-26 12:49:20 628

原创 c++ 时间类型详解 time_t

Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。Unix时间戳不仅被使用在Unix 系统、类Unix系统中,也在许多其他操作系统中被广告采用。目前相当一部分操作系统使用32位二进制数字表示时间。此类系统的Unix时

2013-05-26 12:24:47 856

原创 Linux cat命令

1、cat 显示文件连接文件内容的工具;cat 是一个文本文件查看和连接工具。查看一个文件的内容,用cat比较简单,就是cat 后面直接接文件名。比如:de>[root@localhost ~]# cat /etc/fstabde>为了便于新手弟兄灵活掌握这个工具,我们多说一点常用的参数;1.0 cat 语法结构;de>cat [选项] [文件]...d

2013-05-26 02:17:52 720

原创 exit的不同值

1 #include 2 #include 3 4 void pr_exit(int statues) 5 { 6 if(WIFEXITED(statues)) 7 { 8 printf("normal trmination, exit statues = %d\n", WEXITSTATUS(statues)); 9 }10

2013-05-26 02:09:14 887

原创 Linux cat命令

1、cat 显示文件连接文件内容的工具; cat 是一个文本文件查看和连接工具。查看一个文件的内容,用cat比较简单,就是cat 后面直接接文件名。比如:de>[root@localhost ~]# cat /etc/fstabde>为了便于新手弟兄灵活掌握这个工具,我们多说一点常用的参数;1.0 cat 语法结构;de>cat [选项] [文件

2013-05-26 01:27:57 591

原创 守护进程的启动方法

守护进程的启动方法主要有:1.在系统启动阶段,由系统初始化脚本启动这些脚本通常位于/etc目录或以/etc/rc开头的某个目录中,以这种方式启动的服务有: inetd超级服务器,web服务器,邮件服务器,syslogd守护进程2.由inetd超级服务器启动以这种方式启动的服务有:inetd监听网络请求(Telnet, FTP)每当有一个请求到达时,启动相应的实际服务器3. cr

2013-05-21 23:53:23 10429

原创 C语言编译全过程剖析

一、 摘要 C语言编译的整个过程是非常复杂的,里面涉及到的编译器知识、硬件知识、工具链知识都是非常多的,深入了解整个编译过程对工程师理解应用程序的编写是有很大帮助的,希望大家可以多了解一些,在遇到问题时多思考、多实践。 一般情况下,我们只需要知道分成编译和连接两个阶段,编译阶段将源程序(*.c)转换成为目标代码(一般是obj文件,至于具体过程就是上面说的那些阶段),连接阶段是把源程

2013-05-21 23:20:15 622

原创 智能指针之 shared_ptr

前面讲到auto_ptr有个很大的缺陷就是所有权的转移,就是一个对象的内存块只能被一个智能指针对象所拥有.但我们有些时候希望共用那个内存块.于是C++ 11标准中有了shared_ptr这样的智能指针,顾名思义,有个shared表明共享嘛.所以shared_ptr类型的智能指针可以做为STL容器的元素下面我们来瞧瞧shared_ptr具体是咋实现的.相较auto_ptr有下面几个不同的地方

2013-05-21 23:18:53 677

原创 智能指针之 auto_ptr

智能指针实际上是一个类(class),里面封装了一个指针指针与内存说到指针自然涉及到内存.我们如果是在堆栈(stack)中分配了内存,用完后由系统去负责释放.如果是自定义类型,就会自动的去调用你的析构函数.但如果是在堆(heap)中分配了内存,也就是用malloc或者new.那只能自动手动的使用free或delete去释放.所以使用heap时处理的不好很容易出现啥内

2013-05-21 22:45:39 748

原创 基本tcp套接字编程

服务器端:#include #include #include #include #include #include "common.h"#define SERV_PORT 9877#define SA struct sockaddr#define LISTENQ 1024#define MAXLINE 4096void str_echo(int sockfd){

2013-05-21 00:37:11 605

原创 配置自己的vim

ubuntu系统装好之后,vi编辑工具默认情况下使用起来特别不好使,我们可以通过以下步骤改善第一步:下载vim文本编辑工具,并且安装:sudo apt-get install  vim第二步:配置vim1.下载jeffy-vim-read.tar.gz配置脚本:(项目网站https://code.google.com/p/jeffy-vim/)$ svn check

2013-05-19 20:32:52 712

原创 linux下的抓包工具wireshark

在ubuntu下,只要sudo apt-get install wireshark就行了。

2013-05-19 19:53:18 779

原创 文件I\O

UNIX系统shell使用文件描述符0与进程标准输入相关联,文件描述符1与标准输出相关联#include #include #define BUFSIZE 4096int main(){ int n; char buf[BUFSIZE]; while((n = read(0, buf, BUFSIZE)) > 0)

2013-05-16 23:51:50 501

原创 Linux od命令

od(octal dump)功能说明:输出文件内容。语  法:od [-abcdfhilovx][-A ][-j ][-N ][-s ][-t ][-w ][--help][--version][文件...]补充说明:od指令会读取所给予的文件的内容,并将其内容以八进制字码呈现出来。od命令用户通常使用od命令查看特殊格式的文件内容。通过指定该命令的不同选项可以以十进制、八

2013-05-16 23:30:18 854

原创 详解coredump

转自http://blog.csdn.net/tenfyguo/article/details/8159176一,什么是coredump        我们经常听到大家说到程序core掉了,需要定位解决,这里说的大部分是指对应程序由于各种异常或者bug导致在运行过程中异常退出或者中止,并且在满足一定条件下(这里为什么说需要满足一定的条件呢?下面会分析)会产生一个叫做core的文件。

2013-05-15 23:03:00 987

原创 Select参数之描述符集(fd_set)

select函数原型为:#include #include int select(int maxfd,fd_set *rdset,fd_set *wrset,fd_set *exset,struct timeval *timeout);    参数maxfd是需要监视的最大的文件描述符值+1;rdset,wrset,exset分别对应于需要检测的可读文件描述符的集合,可写文件描述符

2013-05-15 22:53:52 1915

原创 网络I/O模型

转自http://blog.csdn.net/moxiaomomo/article/details/68444691.阻塞I/O模型与非阻塞I/O模型阻塞与非阻塞的模型主要区别是:阻塞I/O模型中用户进程在能读取数据之前会进入睡眠或者挂起状态;而非阻塞情况下遇到读取数据失败时内核直接返回错误信号,用户进程便在成功返回数据之前一直在调用recv操作询问

2013-05-15 22:08:15 862

原创 C++中智能指针的工作原理和简单实现

转自http://www.cnblogs.com/yangshaoning/archive/2012/03/18/cpp_smart_pointer.html   智能指针:它的一种通用实现方法是采用引用计数的方法。智能指针将一个计数器与类指向的对象相关联,引用计数跟踪共有多少个类对象共享同一指针。    每次创建类的新对象时,初始化指针并将引用计数置为1;    当对象作为另一对

2013-05-14 22:28:24 787

原创 linux中waitpid系统调用

对于进程的一生可以用一些形象的比喻作一个小小的总结:随着一句fork,一个新进程呱呱落地,但它这时只是老进程的一个克隆。然后随着exec,新进程脱胎换骨,离家独立,开始了为人民服务的职业生涯。人有生老病死,进程也一样,它可以是自然死亡,即运行到main函数的最后一个”}”,从容地离我们而去;也可以是自杀,自杀有2种方式,一种是调用 exit函数,一种是在main函数内使用return,

2013-05-14 22:21:42 814

原创 Linux编程基础之进程等待(wait()函数)

编程过程中,有时需要让一个进程等待另一个进程,最常见的是父进程等待自己的子进程,或者父进程回收自己的子进程资源包括僵尸进程。这里简单介绍一下系统调用函数:wait()函数原型是#include #include int wait(int *status)函数功能是:父进程一旦调用了wait就立即阻塞自己,由wait自动分析是否当前进程的某个子进程已经退出,如果让它找到了这样

2013-05-14 22:14:16 937

原创 Linux 信号signal处理函数

alarm(设置信号传送闹钟)相关函数 signal,sleep表头文件 #include定义函数 unsigned int alarm(unsigned int seconds);函数说明 alarm()用来设置信号SIGALRM在经过参数seconds指定的秒数后传送给目前的进程。如果参数seconds 为0,则之前设置的闹钟会被取消,并将剩下的时间返回。返回值返回之前闹钟

2013-05-14 22:04:49 818

原创 Linux 信号signal处理机制

转自http://www.cnblogs.com/taobataoma/archive/2007/08/30/875743.html信号是Linux编程中非常重要的部分,本文将详细介绍信号机制的基本概念、Linux对信号机制的大致实现方法、如何使用信号,以及有关信号的几个系统调用。 信号机制是进程之间相互传递消息的一种方法,信号全称为软中断信号,也有人称作软中断。从它的命名可以看出,它

2013-05-14 21:59:31 793

原创 IPV4套接字地址结构

定义在struct in_addr{ in_addr_t s_addr;}struct sockaddr_in{ uint8_t sin_len; sa_family_t sin_family; in_port_t sin_port; struct in_addr

2013-05-10 00:03:38 810

原创 TIME-WAIT状态

TCP执行主动关闭的那端都经历TIME-WAIT状态这个阶段,该状态的持续时间是最长分节生命期的两倍,即2MSL.TIME-WAIT状态存在的两个理由(存在就有合理性)1. 可靠的实现TCP全双工连接的终止2.容许老的重复分组在网络中消逝

2013-05-09 23:54:27 654

原创 Linux多线程编程

转自http://www.cnblogs.com/skynet/archive/2010/10/30/1865267.html1、进程与线程进程是程序执行时的一个实例,即它是程序已经执行到何种程度的数据结构的汇集。从内核的观点看,进程的目的就是担当分配系统资源(CPU时间、内存等)的基本单位。线程是进程的一个执行流,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位

2013-05-08 23:01:54 624

原创 volatile关键字

volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。使用该关键字的例子如下:int volatile nVint;当要求使用volatile 声明的变量的值的时候,系统总是重新从它所在的内存读取数据,即使它前面

2013-05-06 22:00:42 842 1

原创 C++中内存分配、函数调用和返回值问题

在谈述函数调用和返回值问题之前,先来看看C++中内存分配的问题以下是各个区的作用:(1)代码区:存放程序代码;(2)数据区   a.静态数据区: 在编译器进行编译的时候就为该变量分配的内存,存放在这个区的数据在程序全部执行结束后系统自动释放,生命周期贯穿于整个程序执行过程。   b.动态数据区:包括堆区和栈区    堆区:这部分存储空间完

2013-05-02 20:54:46 919

原创 C/C++中const关键字详解

为什么使用const?采用符号常量写出的代码更容易维护;指针常常是边读边移动,而不是边写边移动;许多函数参数是只读不写的。const最常见用途是作为数组的界和switch分情况标号(也可以用枚举符代替),分类如下:  常变量:  const 类型说明符 变量名  常引用:  const 类型说明符 &引用名  常对象:  类名 const 对象名  常成员函数:  类名::fun(

2013-05-01 12:17:15 673

原创 C++友元函数总结

1.友元函数的简单介绍1.1为什么要使用友元函数在实现类之间数据共享时,减少系统开销,提高效率。如果类A中的函数要访问类B中的成员(例如:智能指针类的实现),那么类A中该函数要是类B的友元函数。具体来说:为了使其他类的成员函数直接访问该类的私有变量。即:允许外面的类或函数去访问类的私有变量和保护变量,从而使两个类共享同一函数。实际上具体大概有下面两种情况需要

2013-05-01 12:09:43 781

原创 虚函数和纯虚函数的区别

首先:强调一个概念定义一个函数为虚函数,不代表函数为不被实现的函数。定义他为虚函数是为了允许用基类的指针来调用子类的这个函数。定义一个函数为纯虚函数,才代表函数没有被实现。定义纯虚函数是为了实现一个接口,起到一个规范的作用,规范继承这个类的程序员必须实现这个函数。  虚函数只能借助于指针或者引用来达到多态的效果。C++纯虚函数一、定义 纯虚函数是在基类中声明的虚

2013-05-01 11:39:35 650

原创 C++中的抽象类以及接口的区别联系

一、抽象类和接口抽象类: 抽象类是特殊的类,不能被实例化(将定义了纯虚函数的类称为抽象类);除此以外,具有类的其他特性;重要的是抽象类可以包括抽象方法,这是普通类所不能的,但同时也能包括普通的方法。抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆盖它们。另外,抽象类可以派生自一个抽象类,可以覆盖基类的抽象方法也可以不覆盖,如果不覆盖,则其派生类必须覆盖它们。虽然不

2013-05-01 11:35:44 601

毕业答辩ppt模板(答辩必备,效果很炫)

毕业答辩ppt模板,答辩必备,效果很炫,给人耳目一新的感觉。

2011-06-12

流程图生成软件(适合初学者学习流程图)

流程图生成软件(适合初学者学习流程图),非常实用,简单

2011-05-28

二进制编辑器(查看.exe文件的内存中的具体二进制存储)

二进制编辑器,用于查看.exe文件的内存中的具体二进制存储。

2011-05-28

.dll文件查看器,直接阅读dll文件

.dll文件查看器,可直接阅读dll文件,非常实用的工具软件

2011-05-27

ACM题解,著名院校oj解题代码

ACM题解,著名院校oj解题代码,对ACmer非常有用

2011-05-27

数据结构代码(严蔚敏版C实现)

数据结构代码,用于深入理解数据结构和算法

2011-05-27

经典数学函数程序(C语言实现)

经典数学函数程序,可用于相关的数学方面的研究

2011-05-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除