自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

wintree的专栏

专注于Linux系统编程,网络编程,高性能服务器技术,c/c++技术学习

  • 博客(22)
  • 资源 (5)
  • 收藏
  • 关注

原创 深入浅出---unix多进程编程之wait()和waitpid()函数

Wait和waipid函数 当一个进程正常或异常终止的时候,内核就像其父进程发送SIGCHLD信号,因为子进程是个一步事件,所以这种信号也是内核系那个父进程发的异步通知。父进程可以选择忽略该信号,或者提供一个该信号发生时即被调用执行的函数。对于这种信号的系统默认动作是忽略它。现在要知道调用wait或waitpid的进程可能会发生什么情况:  如果其所有子进程都在运行,则阻塞

2011-11-21 23:43:57 37903 15

原创 深入浅出--UNIX多进程编程之fork()函数

0前言上周都在看都在学习unix环境高级编程的第八章——进程控制。也就是这一章中,让我理解了unix中一些进程的原理。下面我就主要按照进程中最重要的三个函数来进行讲解。让大家通过阅读这一篇文章彻底明白进程这点事。希望对大家有所帮助。1进程环境         在学习进程之前,一定要了解一下unix的进程环境。系统如何对进程终止,和一个程序启动终止,程序运行的原理等,这些都有

2011-11-21 11:58:36 18236 14

原创 作为程序员,我们更应该《挖一口属于自己的井 》

今天看到一篇很有道理的一篇文章,分享给大家。不论在什么行业,尤其是在我们这个吃年轻饭的的IT行业,尤其是敲代码的程序员。我们就应该要记住下面的这个道理。 两个和尚住在隔壁,所谓隔壁就是隔壁那座山,他们分别住在相邻的两座山上的庙里。两座山之间有一条溪,这两个和尚每天都会在同一时间下山去溪边挑水,久而久之,他们便成为了好朋友。  就这样,时间在每天挑水中不知不觉已经过了5年。突然有一天,左

2011-11-19 22:48:52 4791 12

原创 unix环境高级编程-5.4-缓冲

提到缓冲这个概念,大家都知道非常熟悉不过了,我们在写程序的时候,比如java,C++都会涉及到一些缓冲的概念,那么到底缓冲有什么好的作用的。 其实缓冲在unix的操作系统里,就是为了减少read和write的调用次数。在第三章中,对不同缓冲区的长度设置,执行IO所要的cpu时间量是不一样的。他也对每个io流自动的进行缓冲管理,从而避免了应用程序需要考虑这一点所带来的麻烦。不幸的是,标准I/

2011-11-01 00:13:49 2194

转载 unix网络编程值setsockopt函数

http://topic.csdn.net/t/20041126/20/3592436.html写出我在网络编程中的一点心得体会,希望对他(^_^也对大家)有帮助: 1. 如果在已经处于 ESTABLISHED状态下的socket(一般由端口号和标志符区分)调用 closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket: BOOL bReu

2011-11-29 23:32:26 1846

原创 unix网络编程之利用select 实现群发的功能

首先 运行在linux 运行gcc -g -o select select.c/ *******select.c*********// *******Using select() for I/O multiplexing */#include #include #include #include #include #include #include #include /* po

2011-11-29 22:51:02 2702 1

转载 fork两次如何避免僵尸进程

曾经觉得费解,温故知新一下:/*g++ -o New0001 New0001.cpp */#include #include #include #include int main(void){   pid_t pid;    if ((pid = fork())     {        fprintf(stderr,"Fork error!/n");

2011-11-22 20:53:23 1487

转载 初学者:ACE学习

转载自:初学者:ACE学习 ACE的配置(window)(使用VC++)安装:1. 从网上下载相应源码――――根据提示编辑config.h文件,并放置在ACE_ROOT\ace 目录下。2. 用VC打开ACE_ROOT\ace\ace.dsw ,并编译,编译后会在ACE_ROOT\lib 目录下生成两个库:ACEd.dll(动态库)和ACEd.lib(静态库)。3. 链接:

2011-11-22 16:37:54 3621

转载 linux:vi 替换命令

vi/vim 中可以使用 :s 命令来替换字符串。以前只会使用一种格式来全文替换,今天发现该命令有很多种写法(vi 真是强大啊,还有很多需要学习),记录几种在此,方便以后查询。  :s/vivian/sky/ 替换当前行第一个 vivian 为 sky  :s/vivian/sky/g 替换当前行所有 vivian 为 sky  :n,$s/vivian/sky/ 替换第 n 行开始到

2011-11-22 10:15:03 1067

转载 ACE_Message_Block功能简介

ACE_Message_Block在Ace中用来表示消息的存放空间,可用做网络通信中的消息缓冲区,使用非常频繁,下面将在如下方简单的介绍一下ACE_Message_Block相关功能。创建消息块 释放消息块 从消息块中读写数据 数据的拷贝 其它常用函数 1。创建消息块 创建消息块的方式比较灵活,常用的有以下几种方式 : 1。直接给消息块分配内存空间创建。     ACE

2011-11-21 16:28:15 1242

转载 C++中new_handler

在过去或者传统的模式中,当operator new不能满足一个内存分配请求的时候,它会返回一个空指针,但是现在如果operator new不能满足一个内存分配请求的时候,会抛出一个异常,这个时候我们可不可以自己定制处理策略呢?这正是new_handler的作用所在,具体情况在后面详细道来    当operator new申请一个内存失败的时候,它会进行如下的处理步骤:    1、如果存在客

2011-11-20 23:56:28 2665

转载 什么是句柄?为什么会有句柄?HANDLE

从广义上,能够从一个数值拎起一大堆数据的东西都可以叫做句柄。句柄的英文是"Handle",本义就是"柄",只是在计算机科学中,被特别地翻译成"句柄",其实还是个"柄"。从一个小东西拎起一大堆东西,这难道不像是个"柄"吗?然后,指针其实也是一种"句柄",只是由于指针同时拥有更特殊的含义——实实在在地对应内存里地一个地址——所以,通常不把指针说成是"句柄"。但指针也有着能从一个32位的值引用到

2011-11-20 20:28:43 2294 1

转载 C语言编译全过程

编译的概念:编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作系统对可执行文件格式的要求链接生成可执行程序。    编译的完整过程:C源程序-->预编译处理(.c)-->编译、优化程序(.s、.asm)-->汇编程序(.obj、.o、.a、.ko)-->链接程序(.exe、.elf、.axf等)1.

2011-11-19 16:47:51 1392 1

原创 unix环境高级编程-undefined reference to 'pthread_create'问题解决

笔者一直在学习unix环境高级编程。第十一章为线程编程。第一个程序就是打印线程ID。程序如下:#include "apue.h"#include pthread_t ntid;void printids(const char* s){ pid_t pid; pthread_t tid; pid=getpid();//得到当前

2011-11-18 19:36:30 8222 2

原创 linux 下安装ACE

首先安装这个东西,网络上很多,百度google 一大把,我就找个比较有代表性的贴在下边吧。主要是想说一下我遇到的问题首先把文件解压,我解压在了/Software文件夹下,解压后会出现一个名字为ACE_wrappers的文件夹。这样所有ACE的源文件都在/Software/ACE_wrappers里面1.1    配置环境变量:# vi /etc/profile增加如下的内容AC

2011-11-14 23:58:56 1972

原创 unix环境高级编程-第七章-进程环境

这两天都没写博客,主要是我想改变一下方法吧。不想一节节的读了,我想把一个整章看好了,然后进行思考,然后再进行编辑写在博客里。我觉得这样可以省的时间来思考,写程序。把每章中最主要的部门拿出来。算是第二遍复习。可以加深我的印象吧。1进程终止进程正常终止:view plaincopy to clipboardprint?#include   void exit(int

2011-11-14 12:49:51 3745 10

原创 unix环境高级编程-7-进程环境

这两天都没写博客,主要是我想改变一下方法吧。不想一节节的读了,我想把一个整章看好了,然后进行思考,然后再进行编辑写在博客里。我觉得这样可以省的时间来思考,写程序。把每章中最主要的部门拿出来。算是第二遍复习。可以加深我的印象吧。1进程终止进程正常终止:#includevoid exit(int status);void _Exit(int status);#include

2011-11-13 18:15:24 1051

原创 unix环境高级编程-5.9-二进制I/O

上一节,我们知道对于读或者写都是一个一个字节,或者一行行的。getc和putc是通过字节来处理。fputs和fgets是一行的,但是遇到null就停止了。下面介绍fread和fwrite函数原型:#includesize_t fread(void* restrict ptr,size_t size,size_t nobj,FILE* restrict fp);size_t

2011-11-08 22:43:11 1098

原创 unix环境高级编程-5.8-标准I/O的效率。

使用上一节所述的函数。我们能对标准的I/O的效率有所了解。请看下面的程序#include "apue.h"int main(void){ int c; while((c=getc(stdin))!=EOF) { if(putc(c,stdout)==EOF) err_sys("output error"); if(ferror(stdin)) err_sys

2011-11-06 21:57:29 1150

原创 unix环境高级编程-5.7-每行一次I/O

下面两个函数提供每次输入一行的功能 #includechar *fgets(char * restrict buf,int n,FILE* restrict fp);char* gets(char* buf); 两个返回值:若成功返回buf,若已达到文件结尾或出错则返回NULL;char * fgets (char *s, int count, FILE *stream

2011-11-06 19:00:13 905

原创 unix环境高级编程-5.6-读和写流

一旦打开了一个流,则可在三种不同的类型的非格式化I/O,中进行选择,对其进行读、写操作:(1)每次一个字符的I/O.一次读或写一个字符。则标准的io函数处理所有缓冲。(2)每次一行的IO,如果想要一次读或写遗憾,则使用fgets和fputs函数。每行都以一个换行符终止。当调用fgets,要说明最大处理行长。(3)直接IO,fread和fwrite函数支持这种类型的IO,每次io操作读或

2011-11-06 16:23:51 1025

原创 c++ string使用详解

之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数据类型。string ( );string ( con

2011-11-03 15:24:05 1455 1

标准库boost程序库导论(中文版).chm

标准库boost程序库导论(中文版).chm标准库boost程序库导论(中文版).chm标准库boost程序库导论(中文版).chm

2011-08-23

C++ static 用法总结

C++ static 用法总结C++ static 用法总结

2011-08-23

关于c++ 继承多态的深度思考

c++ 继承多态 深度思考c++ 继承多态 深度思考c++ 继承多态 深度思考c++ 继承多态 深度思考

2011-08-23

空空如也

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

TA关注的人

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