摘要:
守护进程在Linux/Unix系统中有着广泛的应用。有时,开发人员也想把自己的程序变成守护进程。在创建一个守护进程的时候,要接触到子进程、进程组、会晤期、信号机制、文件、目录和控制终端等多个概念。因此守护进程还是比较复杂的,在这里详细地讨论Linux/Unix的守护进程的编写,总结出八条经验,并给出应用范例。编程要点1.屏蔽一些有关控制终端操作的信号。防止在守护进程没有正常运转起来时,控制终端受到... 阅读全文
摘要:
一般当一个进程终止后都会发送SIGCHLD信号给它的父进程,并由此变为僵死进程直到父进程接收了其状态报告其资源才会被系统释放;
处理方法有3种:
1. 当子进程终止时父进程接收SIGCHLD信号并调用waitpid()函数接收其状态报告,最好用sigaction(),signal()不可靠;
2. 通过函数sigaction指明标志SA_NOCLDWAIT来指定信号SIGCHLD的动作,这使得内核在调用者的子进程终止时不创建僵死进程。
3. 二次fork调用; 阅读全文
摘要:
来源: LUPA开源社区发布时间: 2007-05-27 04:30 Linux下的网络编程分为两部分:服务器编程和客户机编程。一般服务器程序在接收客户机连接请求之前,都要创建一个守护进程。守护进程是linux/Unix编程中一个非常重要的概念,因为在创建一个守护进程的时候,我们要接触到子进程、进程组、会晤期、信号机制以及文件、目录、控制终端等多个概念,因此详细地讨论一下守护进程,对初学者学习进程... 阅读全文
摘要:
一般linux下TCP连接的限制在TD_SETSIZE,系统默认为1024,由FD_SETSIZE决定。1.修改方法: 修改/usr/etc/security/limits.conf文件,加入*soft nofile 20000*hard nofile 20000 然后reboot系统。服务器就可以建立连接到20000个了,其连接方法是直接用connect,accept,注意这里用select是不... 阅读全文
摘要:
在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的 限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄)。。。。 阅读全文
摘要:
本文来自Valgrind 官方网站的《Quick Start Guide》,建议读者直接到其网站上获取更详细的信息:http://www.valgrind.org/docs/manual/quick-start.html#quick-start.prepare1.IntroductionThe Valgrind tool suite provides a number of debugging a... 阅读全文
摘要:
原文地址:http://www.upsdn.net/html/2006-11/775.html感谢作者给我们提供这么好的文章,解决了我的问题! ——khler简而言之,产生段错误就是访问了错误的内存段,一般是你没有权限,或者根本就不存在对应的物理内存,尤其常见的是访问0地址.一般来说,段错误就是指访问的内存超出了系统所给这个程序的内存空间,通常这个值是由gdtr来保存的,他... 阅读全文
摘要:
1.简 介 log4cplus是C++编写的开源的日志系统,前身是java编写的log4j系统.受Apache Software License保护。作者是Tad E. Smith。 log4cplus具有线程安全、灵活、以及多粒度控制的特点,通过将信息划分优先级使其可以面向程序调试、运行、测试、和维护等全生命周期;你可以选择将信息输出到屏幕、文件、NT event log、甚至是远程服务器;通过... 阅读全文
摘要:
首先我们需要知道程序有没有内存泄露,然后定位到底是哪行代码出现内存泄露了,这样才能将其修复。 最简单的方法当然是借助于专业的检测工具,比较有名如BoundsCheck,功能非常强大,相信做C++开发的人都离不开它。此外就是不使用任何工具,而是自己来实现对内存泄露的监控,分如下两种情况: 一. 在 MFC 中检测内存泄漏 假如是用MFC的程序的话,很简单。默认的就有内存泄露检测的功能。 我们... 阅读全文
摘要:
Ubuntu虚拟机共享主机上网WinXP+VMware WorkStation+Ubuntu7.10一.Bridged方式共享上网 1.设置Ubuntu的网络连接方式为Bridged2.共享ADSL连接ADSL连接属性中选中“Internet连接共享”,下拉列表中然后选择“本地连接”,系统会自动把“本地连接”设置为192.16... 阅读全文
摘要:
wget 是一个命令行的下载工具。对于我们这些 Linux 用户来说,几乎每天都在使用它。下面为大家介绍几个有用的 wget 小技巧,可以让你更加高效而灵活的使用 wget。$ wget -r -np -nd http://example.com/packages/这条命令可以下载 http://example.com 网站上 packages 目录中的所有文件。其中,-np 的作用是不遍历父目录... 阅读全文
摘要:
设计模式的原则1、"开-闭"原则——模块应对扩展开放,而对修改关闭。2、里氏代换原则——如果调用的是父类的话,那么换成子类也完全可以运行。里氏代换原则是继承复用的一个基础。3、合成复用原则——要少用继承,多用合成关系来实现。4、依赖倒转原则——抽象不应该依赖与细节,细节应当依赖与抽象。 要针对接口编程,... 阅读全文
摘要:
================================================= 本文为khler原作,转载必须确保本文完整并完整保留原作者信息及本文原始链接 E-mail: khler@163.com QQ:23381103 MSN:pragmac@hotmail.com ================================================... 阅读全文
摘要:
大字节序、小字节序原理说明及各操作系统的判断及转换方法 阅读全文
摘要:
LINUX下tar.gz包的安装方法源码大多以tar.gz 和tar.bz2打包软件,大多是通过 ./configure ;make ;make install 来安装的;有的软件是直接make;make install ;我们可以通过./configure --help 来查看配置软件的功能;大多软件是提供./configure 配置软件的功能的;少数的也没有,如果没有的就不用./configu... 阅读全文
摘要:
在socket编程中,服务器端accept()等待一个客户端的连接,当连接成功后,accept拷贝客户端的地址信息到sin_addr里面,我们如何从sin_addr取得此客户端的Ip地址和端口号呢?实际上,当sockaddr_in.sin_family = AF_INET时,sockaddr =sockaddr_in。据此,我们可以做一下转换,就可以利用 inet_ntoa() 来得到ip地址和端... 阅读全文
摘要:
这几天把工作环境从windows下面转到linux了,因为用的java语言开发,项目移植还是蛮容易的,但不准备再用CVS来做版本控制系统了,决定换功能较强大的SVN,于是了解了下linux下安装Subversion的方法,现总结如下编译安装相关软件(我们采用源码编译安装)a.httpd下载地址:http://httpd.apache.org下载httpd-*.tar.gz (*为版本号,这里使用的... 阅读全文
摘要:
Bugzilla安装需要perl5.6.1及以上版本、mysql4.0.14及以上版本(PostgreSQL7.3.x及以上版本)1、下载bugzilla从 http://ftp.mozilla.org/pub/mozilla.org/webtools/bugzilla-2.20.4.tar.gz 下载bugzilla。(据说版本号中间的数字为偶数代表稳定版,为奇数代表测试版)2、下载bugzil... 阅读全文
摘要:
Ubuntu 在安装时,如同大部分 Linux 发行版一样,都会同时安装 GNU 版本的 Java。这个 Java 的实用程度太低,尤其对于开发人员来说,是没有太多用处的。在 Ubuntu 下,安装 SUN Java 是一件很容易的事情。第一步: 原文:http://blog.csdn.net/firefoxboy/archive/2008/11/26/3380225.aspx 阅读全文
摘要:
原地址:http://www.rjgc.net/control/content/content.php?nid=4418 1、将文件checkout到本地目录svn checkout path(path是服务器上的目录)例如:svn checkout svn://192.168.1.1/pro/domain简写:svn co 2、往版本库中添加新的文件svn add file例如:svn addt... 阅读全文
摘要:
鱼漂(www.eit.name)原创,转载请注明.安装步骤如下:1. 安装Jre, Jdksudo apt-get install sun-java6-jresudo apt-get install sun-java6-jdk2. 安装Eclipsesudo apt-get install eclipse安装完eclipse后,还需要安装以下两个包,否则安装CDT将失败:sudo apt-get ... 阅读全文
摘要:
Ubuntu上Eclipse + CDT 安装指南http://timjiang2000.spaces.live.com/blog/cns!390AF4E52022319A!510.entry用apt-get装eclipse + cdt总是出问题,于是打算手动安装配置,找到了这个帖子,很详细。特别是设置方面,以后手动安装软件都可以参考这个了。另外,上eclipse的官网下载时,发现有集成了ecli... 阅读全文
摘要:
http://oss.org.cn/?action-viewnews-itemid-3724http://blog.csdn.net/yang_dk/archive/2008/06/03/2506928.aspx了解如何正确运用线程是每一个优秀程序员必备的素质。线程类似于进程。如同进程,线程由内核按时间分片进行管理。在单处理器系统中,内核使用时间分片来模拟线程的并发执行,这种方式和进程的相同。而在... 阅读全文
摘要:
POSIX线程基本概念 线程编程在smp体系结构处理并发时会被提及的比较多。它可以实现并发多道操作,常被称为轻量级的进程,因为它可以共享进程资源,省去了多进程切换时内核的上下文切换所用的花销。 多数Linux编程教材里面对POSIX线程的介绍占的篇幅并不多。Linux的fork对多进程的有较好的优化技术,而__clone系统调用相当于使 用进程的方法实现... 阅读全文
摘要:
在调用库函数或系统调用函数后,绝大多数情况下执行成功返回 0;如果执行失败则返回-1,并对外部全局变量 error 赋值,以指示具体的错误情况。所有的错误代码都在 errno.h文件中定义。以下是/usr/include/asm/errno.h 文件的部分内容。come from /usr/include/asm/errno.h#ifndef _I386_ERRNO_H#define _I386_... 阅读全文
摘要:
linux下多线程的创建与等待详解所有线程都有一个线程号,也就是Thread ID。其类型为pthread_t。通过调用pthread_self()函数可以获得自身的线程号。下面说一下如何创建一个线程。通过创建线程,线程将会执行一个线程函数,该线程格式必须按照下面来声明:void * Thread_Function(void *)创建线程的函数如下:intpthread_create(pthrea... 阅读全文
摘要:
C语言库函数大全 何元会,2010/8/17整理,加入分类和目录Turbo C 2.0 函数中文说明大全目录C语言库函数大全... 1分类函数... 1数学函数... 1目录函数... 3进程函数... 4诊断函数... 5输入输出子程序... 6接口子程序... 11操作函数... 17字符串操作函数(str…) 18存贮分配子程序... 19时间日期函数... 19分类函数所在函数... 阅读全文
摘要:
for(iterator it = begin(); it != end(); ++it)for(iterator it = begin(); it != end(); it++)两种方式iterator遍历的次数是相同的,但在STL中效率不同,前++--返回引用,后++--返回一个临时对象,因为iterator是类模板,使用it++这种形式要返回一个无用的临时对象,而it++是函数重载,所以编译... 阅读全文
摘要:
2009-02-10 作者: infobillows 来源:网络在将一个C源程序转换为可执行程序的过程中, 编译预处理是最初的步骤. 这一步骤是由预处理器(preprocessor)来完成的. 在源流程序被编译器处理之前, 预处理器首先对源程序中的"宏(macro)"进行处理. C初学者可能对预处理器没什么概念, 这是情有可原的: 一般的C编译器都将预处理, 汇编, 编译, 连接过程集成到一起了.... 阅读全文
摘要:
一、预编译头文件说明所谓头文件预编译,就是把一个工程(Project)中使用的一些MFC标准头文件(如Windows.H、Afxwin.H)预先编译,以后该工程编译时,不再编译这部分头文件,仅仅使用预编译的结果。这样可以加快编译速度,节省时间。预编译头文件通过编译stdafx.cpp生成,以工程名命名,由于预编译的头文件的后缀是“pch”,所以编译结果文件是projectn... 阅读全文
摘要:
解析XML文件使用到了微软的msxml ,在xp下使用的时候,只要#import <msxml.dll>编译就可以顺利通过,当把工程移植到Vista上的时候就会遇到找不到msxml.dll的错误。原来在Vista上msxml.dll升级为msxml6.dll,只要把#import <msxml.dll>改成#import <msxml6.dll>相应using ... 阅读全文
摘要:
一、什么是Unicode 先从ASCII说起,ASCII是用来表示英文字符的一种编码规范。每个ASCII字符占用1个字节,因此,ASCII编码可以表示的最大字符数是255(00H—FFH)。其实,英文字符并没有那么多,一般只用前128个(00H—7FH,最高位为0),其中包括了控制字符、数字、大小写字母和其它一些符号。而最高位为1的另128个字符(80H—FF... 阅读全文
摘要:
来源:作者:日期:10-01-24 电子化时代的许多经营活动需要借助信息系统管理,因此软件外包现象越来越普遍。在软件外包过程中,发包方似乎处于主动位置,可以决定是否和如何外包,哪些内容需要外包,并可以自主选择合适的承包方。但是,企业经营活动高度复杂,风险无处不在。软件外包作为软件生产的新方式同样存在各种风险,现实中有不少发包企业在实施外包项目后发现问题丛生,最终导致外包项目流产。存在风险并不可... 阅读全文
摘要:
WinSock基本知识这里不打算系统地介绍socket或者WinSock的知识。首先介绍WinSock API函数,讲解阻塞/非阻塞的概念;然后介绍socket的使用。WinSock APISocket接口是网络编程(通常是TCP/IP协议,也可以是其他协议)的API。最早的Socket接口是Berkeley接口,在Unxi操作系统中实现。WinSock也是一个基于Socket模型的API,在Mi... 阅读全文
摘要:
Note:This tutorial assumes that the user has experience writing basic Qt applications, designing user interfaces with Qt Designer and and using the Qt Resource System.In this example, we will describe... 阅读全文
摘要:
和MFC比较起来,QT的信号槽机制比MFC的信号机制慢,但是因为能很好的实现跨平台,所以我在这里总结一下可能对一些人有点用。OpenCV.China论坛上有一个帖子叫做《在MFC框架中快速应用OpenCV》看了后就想结合QT写一下。0.搭建环境:OpenCV + QT 4.6我的实验是基于VS2008来做的,QT官方虽然提供了VS2008-add-in的插件,我没有用。直接下载器编译好的库文件进行... 阅读全文
摘要:
Frequently Asked QuestionsWhy is code completion not working?You're implementing a slot...Visual Studio can only provide code completion as long as it understands the code. Unfortunately, it does not ... 阅读全文
摘要:
To add a new translation file to the project, selectQt|Create New Translation File. In theAdd Translationdialog, you can choose the language to create a translation file. A suggested file name is prov... 阅读全文
摘要:
Adding new resources to a Qt project is similar to adding resources to a normal C++ project, the main difference being that.qrcfiles (Qt resource files) are used instead of Windows.rcfiles. Unlike.rcf... 阅读全文