
linux
文章平均质量分 67
hwz_119
这个作者很懒,什么都没留下…
展开
-
把程序输出信息加到系统日志里去
我们的程序一般都会产生输出信息。但是服务器程序一般却不希望输出信息到屏幕上,因为没有人盯着你的程序执行。所以我们要把一些信息写成日志文件,正常情况下运行程序的人不用关心日志里的内容,只有在出现问题的时候才会查看日志文件里的内容以确定问题所在。但如果我们的程序要自己生成一个文件来保存日志却不是好主意,因为这一方面增加了维护程序运行的人的负担,另一方面自己维护转载 2007-03-19 22:39:00 · 2027 阅读 · 0 评论 -
Linux网络编程一步一步学-epoll同时处理海量连接的代码
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define MAXBUF 1024#def转载 2007-03-19 22:57:00 · 1452 阅读 · 1 评论 -
Linux网络编程一步一步学-同步聊天程序
什么是异步通讯?就是通讯任意一方可以任意发送消息,有消息来到时会收到系统提示去接收消息。这里要用到select函数。使用步骤如下:1、设置一个集合变量,用来存放所有要判断的句柄(file descriptors:即我们建立的每个socket、用open打开的每个文件等)2、把需要判断的句柄加入到集合里3、设置判断时间4、开始等待,即select5、如果在设定的时间内有任何句柄状态变化了就马上返回,转载 2007-03-19 22:04:00 · 3879 阅读 · 0 评论 -
Linux网络编程一步一步学-select详解
select系统调用是用来让我们的程序监视多个文件句柄(file descriptor)的状态变化的。程序会停在select这里等待,直到被监视的文件句柄有某一个或多个发生了状态改变。文件在句柄在Linux里很多,如果你man某个函数,在函数返回值部分说到成功后有一个文件句柄被创建的都是的,如man socket可以看到“On success, a file descriptor for the转载 2007-03-19 22:00:00 · 2240 阅读 · 0 评论 -
非阻塞 Socoket 编程
在互联网相当普及的今天,在互联网上聊天对很多“网虫”来说已经是家常便饭了。聊天室程序可以说是网上最简单的多点通信程序。聊天室的实现方法有很多,但 都是利用所谓的“多用户空间”来对信息进行交换,具有典型的多路I/O的架构。一个简单的聊天室, 从程序员的观点来看就是在多个I/O端点之间实现多对多的通信。其架构如图一所示。这样的实现在用户的眼里就是聊天室内任何一个人输入一段字符之后,其他 用户都可以得转载 2007-03-20 11:21:00 · 1146 阅读 · 0 评论 -
Linux下通用线程池的创建与使用-2
void CThreadPool::MoveToIdleList(CWorkerThread* busythread){ m_IdleMutex.Lock(); m_IdleList.push_back(busythread); m_AvailNum++; m_IdleMutex.Unlock(); m_BusyMutex.Lock();转载 2007-03-20 15:27:00 · 1246 阅读 · 0 评论 -
Linux下通用线程池的创建与使用-1
本 文给出了一个通用的线程池框架,该框架将与线程执行相关的任务进行了高层次的抽象,使之与具体的执行任务无关。另外该线程池具有动态伸缩性,它能根据执行 任务的轻重自动调整线程池中线程的数量。文章的最后,我们给出一个简单示例程序,通过该示例程序,我们会发现,通过该线程池框架执行多线程任务是多么的简 单。 为什么需要线程池目前的大多数网络服务器,包括Web服务器、Email服务器以及数据库服转载 2007-03-20 15:24:00 · 1278 阅读 · 0 评论 -
Linux中.o,.a.so的意义及实现
linux下文件的类型是不依赖于其后缀名的,但一般来讲:.o,是目标文件,相当于windows中的.obj文件.so 为共享库,是shared object,用于动态连接的,和dll差不多.a为静态库,是好多个.o合在一起,用于静态连接.la为libtool自动生成的一些共享库,vi编辑查看,主要记录了一些配置信息。可以用如下命令查看*.la文件的格式 $file *.la *.la转载 2007-03-20 15:30:00 · 13697 阅读 · 0 评论 -
一个简短的epoll服务器示例, 监听5000个端口, 使用线程池
运行这个程序需要预先设置栈内存和文件描述符上限, 否则运行失败ulimit -n 16384ulimit -s 4096文件名:server.c编译: gcc server.c -Wall -O2 -pthread -o server 程序源码如下(请自行编辑宏定义SERVER_IP为自己的IP):/*Linux 2.6 x86_64 only*/#include #include #includ转载 2007-03-22 14:23:00 · 1875 阅读 · 1 评论 -
linux2.6内核epoll用法举例说明
epoll用到的所有函数都是在头文件sys/epoll.h中声明的,下面简要说明所用到的数据结构和函数: 所用到的数据结构 typedef union epoll_data { void *ptr; int fd; __uint32_t u32; __uint64_t u64; } epoll_data_t; struct epoll_event { __uint32_t events; /*转载 2007-03-22 14:48:00 · 1035 阅读 · 0 评论 -
Linux网络编程--服务器模型
学习过《软件工程》吧.软件工程可是每一个程序 员"必修"的课程啊.如果你没有学习过, 建议你去看一看. 在这一章里面,我们一起来从软件工程的角度学习网络编程的思想.在我们写程序之前, 我们都 应该从软件工程的角度规划好我们的软件,这样我们开发软件的效率才会高. 在网络程序里面,一般的来说都是许多客户机对应一个服务器.为了处理客户机的请 求, 对服务端的程序就提出了特殊的要求.我们学习一下目前最常用转载 2007-03-22 19:50:00 · 1715 阅读 · 1 评论 -
Linux程式设计(转载)一
Linux程式设计--前言、目录 --------------------------------------------------------------------------------来自:http://www.openchess.org/noitatsko/programming/在这里的内容大都是属於入门类的,有点包山包海的,颇为散乱,许多部份都是浅尝即止,主要让您不在Linux转载 2007-03-22 20:01:00 · 1104 阅读 · 0 评论 -
Linux程式设计(转载)二
Linux程式设计- 6.syslog在Linux下有个syslogd的Daemon程式,syslog是个系统管理员必看的档案。因此,如果您的程式有除错或安全讯息要显示,写到syslog是个很好的选择。 syslog有三个函数,使用上,一般您只需要用syslog(...)这个函数即可,一般使用状况下,openlog/closelog是可有可无的。 syslog()中的priority是fa转载 2007-03-22 20:05:00 · 1075 阅读 · 0 评论 -
进程的创建
作者:Wilbur Lang 在 UNIX 系统中,用户创建一个新进程的唯一方法就是调用系统调用 fork。调 用 fork 的进程称为父进程,而新创建的进程叫做子进程。系统 调用的语法格式: pid = fork(); 在从系统调用 fork 中返回时,两个进程除了返回值 pid 不同外,具有 完全一样的用户级上下文。在子进程中,pid 的值为零。在系统启动时由核心内转载 2007-03-23 11:05:00 · 1100 阅读 · 0 评论 -
BSD socket入门
大鹰 当你进入 UNIX 的神秘世界后,立刻会发现越来越多的东西难以理解。对于大多数人来说,BSD socket 的概念就是其中一个。这是一个很短的教程来解释他们是什么、他们如何工作并给出一些简单的代码来解释如何使用他们。 类比 (什么是 socket ?) socket 是进行程序间通讯(IPC)的 BSD 方法。这意味着 socket 用来让一个进程和其他的进程互通信息,就象我们用电转载 2007-03-23 15:39:00 · 842 阅读 · 0 评论 -
一个简易的proxy程序的开发过程(1)
1、引言 很多人都看过Eric Steven Raymond写的> (大教堂与集市) 这篇文章吧。 这篇文章讲述了传统的开发小组开发方式和基于Internet的分散的开发方式(linux的开发方式,GNU软件的 开发方式)的区别,并且根据自己的一个程序的开发例子来讲述了The Bazaar开发方式的若干条重要原则。 不过,国内很多程序员,工作的时候还是采转载 2007-03-23 09:40:00 · 1216 阅读 · 0 评论 -
一个简易的proxy程序的开发过程(2)
简易Proxy程序(源代码) 上次贴出了一篇>和>之后,有不少网友来信询问下文何时出现。我却一直忙于工作,忘记了将下文贴上来,非常抱歉。现在在这里把源代码贴出来。我 申明这个源代码基于GNU GPL,目的在于希望大家能够有时间去更加完善它。你也可以按照你自己的希望去改变它。不过,如果你做了任何大的改动,请通知我. TODO: 1、使程序能够监听多个端口,并且连接多个转载 2007-03-23 09:45:00 · 862 阅读 · 0 评论 -
postfix简介
一、 postfix概述 postfix是Wietse Venema在IBM的GPL协议之下开发的MTA(邮件传输代理)软件。下面一段话摘自postfix的官方站点(http://www.postfix.org):“postfix是Wietse Venema想要为使用最广泛的sendmail提供替代品的一个尝试。在Internet世界中,大部分的电子邮件都是通过sendmail来投递的,大约有转载 2007-06-17 15:40:00 · 1441 阅读 · 0 评论 -
Posix线程编程指南(1)
线程创建与取消级别: 初级 杨沙洲 (pubb@163.net) 2001 年 10 月 01 日 这是一个关于转载 2007-06-20 09:46:00 · 731 阅读 · 0 评论 -
Posix线程编程指南(5)杂项
这是一个关于Posix线程编程的专栏。作者在阐明概念的基础上,将向您详细讲述Posix线程库API。本文是第五篇将向您讲述pthread_self()、pthread_equal()和pthread_once()等杂项函数。 在Posix线程规范中还有几个辅助函数难以归类,暂且称其为杂项函数,主要包括pthread_self()、pthread_equal()和 pthread_once转载 2007-06-20 09:54:00 · 661 阅读 · 0 评论 -
linux使用top命令察看系统进程信息
top命令 top命令和ps命令的基本作用是相同的,显示系统当前的进程和其他状况;但是top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态。如? 前台执行该命令,它将独占前台,直到用户终止该程序为止。 比较准确的说,top命令提供了实时的对系统处理器的状态监视。它将显示系统中CPU最“敏感”的任务列表。该命令可以按CPU使用。内存使用和执行时 间对任务进行排序;而且转载 2007-06-22 15:20:00 · 1243 阅读 · 0 评论 -
利用消息队列来实现IPC
晚上在FC4下调试出了第一个linux程序,成功地运行,有点成就感,虽然这个程序是抄过来. 本程序的功能是利用系统V(Sys V)消息队列来实现进程间的通信(IPC). 简单地介绍程序: 用到的一个数据结构-------消息,用一个结构体来表示: struct msgbuf转载 2007-06-25 11:02:00 · 3187 阅读 · 2 评论 -
Posix线程编程指南(3) Posix线程编程指南(3)线程同步
2001 年 10 月 01 日这是一个关于Posix线程编程的专栏。作者在阐明概念的基础上,将向您详细讲述Posix线程库API。本文是第三篇将向您讲述线程同步。 互斥锁 尽管在Posix Thread中同样可以使用IPC的信号量机制来实现互斥锁mutex功能,但显然semphore的功能过于强大了,在Posix Thread中定义了另外一套专门用于线程同步的mutex函转载 2007-06-20 09:52:00 · 908 阅读 · 0 评论 -
linux 多线程socket
很多文章介绍的linux上的socket 服务端,思想有两种 1. 在非阻塞模式下,使用select 2. 用子进程的方式 都不是可能很直观的理解(个人看法) 如果用线程,我想整个思路会更清晰的容易操作,只需要我们加上 pthread 我的多线程服务端的思路如下: 申明 n + 1个大小的线程数组, 第n+1个线程专门用于 BUSY 通知 在accept阻塞时,每收到一个请求,启用一个线转载 2007-03-26 19:34:00 · 2828 阅读 · 0 评论 -
Linux下的多线程编程
1 引言 线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期,solaris是这方面的佼佼者。传统的 Unix也支持线程的概念,但是在一个进程(process)中只允许有一个线程,这样多线程就意味着多进程。现在,多线程技术已经被许多操作系统所支 持,包括Windows/NT,当然,也包括Linux。 为什么有了进转载 2007-03-26 15:19:00 · 1016 阅读 · 0 评论 -
linux+kdevelop下的多线程开发问题
开发环境:RedHat Linux AS4+ KDevelop现象:编译时KDevelop会报链接错误:/root/kde/oop/src/oop.c:23:undefined reference to `pthread_create解决方法:KDevelop:在link option中加-pthread原创 2007-03-26 20:23:00 · 1224 阅读 · 0 评论 -
使用JAVA建立稳定的多线程服务器
本文详细的介绍了使用Java语言建立一套多线程服务器的过程,该服务器使用对象传递消息,在线程中使用队列机制,使服务器的性能大大提高了。这套服务器可以被用于各种C/S或B/S结构的应用程序中。 Java语言是完全面向对象的,它的线程机制和对象序列化特别容易使用,使用Java来建立一套多线程服务器要比使用其它语言方便的多,如果你再把它的异常处理机制利用好,那么你就可以建立一个商业级的多线程服务转载 2007-06-24 15:21:00 · 779 阅读 · 0 评论 -
一个读线程,一个写线程同时操作一个套接字
一个读线程,一个写线程同时操作一个套接字是没问题的,但必需主意一点:做错误处理时非法同步的准备,即保证在出现SOCKET错误时只有一个处理函数被调用,而不是2个线程同时调用2个,否则将发生问题原创 2007-06-25 09:46:00 · 1887 阅读 · 0 评论 -
Posix线程编程指南(4)
杨沙洲 (pubb@163.net)2001 年 11 月 01 日这是一个关于Posix线程编程的专栏。作者在阐明概念的基础上,将向您详细讲述Posix线程库API。本文是第四篇将向您讲述线程中止。 线程终止方式 一般来说,Posix的线程终止有两种情况:正常终止和非正常终止。线程主动调用pthread_exit()或者从线程函数中return都将使线程正 常退出,这是可预见的退转载 2007-06-20 09:43:00 · 617 阅读 · 0 评论 -
Posix线程编程指南(2)线程私有数据
转载 2007-06-20 09:49:00 · 1007 阅读 · 0 评论 -
通用线程:POSIX 线程详解,第 2部分
称作互斥对象的小玩意 级别: 初级 Daniel Robbins (drobbins@gentoo转载 2007-06-20 09:57:00 · 743 阅读 · 0 评论 -
UNIX多线程数据共享与线程同步
作者:杨海平 姚洪利 本文选自:中国计算机报 2001年12月18日 在UNIX中,一个进程让另外实体进行某项事务而采取的操作为fork的一个子进程,子进 程只是将父进程的数据区拷贝一份到自己的数据区。在符合POSIX标准的UNIX操作系统下 ,同一个进程的线程之间共享进程指令、大多数数据(线程私有数据除外)、信号处理 方式、进程运行环境等。由于线程共享进程的全局变量,因此可以采用用户转载 2007-06-22 15:38:00 · 2372 阅读 · 0 评论 -
线程安全的队列
#ifdef WIN32 #include #else #include #include #endif #include #include #include #include using namespace std; //这个是线程安全的队列,Synchronized类的实现在下面 template class SyncQueue:public Synchronized{转载 2007-06-23 13:37:00 · 2000 阅读 · 0 评论 -
基于TCP/IP的局域网多用户通信
基于TCP/IP的局域网多用户通信作者:华东船舶工业学院机械系 袁 渊下载本文示例源代码摘要:基于TCP/IP的网络通信技术实现了面向连接的用户与服务器间点对点异步通信,本文在该基础上应用了多线程以及共享数据结构技术,使网络服务器具有了多用户间数据转发的功能,进而解决了局域网多用户间的通信问题。关键词:TCP/IP;多线程;共享;通信;网络引言由于因特网的迅速流行,越来越多的应用程转载 2007-06-24 15:34:00 · 1072 阅读 · 0 评论 -
C语言中可变参数的用法
C语言中可变参数的用法 我们在C语言编程中会遇到一些参数个数可变的函数,例如printf() 这个函数,它的定义是这样的: int printf( const char* format, ...); 它除了有一个参数format固定以外,后面跟的参数的个数和类型是 可变的,例如我们可以有以下不同的调用方法: printf("%d",i); printf("%s",s); printf("t转载 2007-06-27 19:20:00 · 719 阅读 · 0 评论 -
关于netstat
今天学习UNP,发现了一个有用的明令:netstat.该命令的功能是显示网络连接,路由表和网络接口信息,让用户得知目前正在运作的网络连接. 命令格式如下: netstat [选项]命令中各选项的含义如下:-a 显示所有socket,包括正在监听的。-c 每隔1秒就重新显示一遍,直到用户中断它。-i 显示所有网络接口的信息,格式同“ipconfig -e”。-n 以网络IP地址代替名称,显原创 2007-04-03 21:26:00 · 761 阅读 · 0 评论 -
Linux下挂载硬盘分区的几种方法
1、使用Autofs自动挂载分区2、修改/etc/fstab3、编写shell脚本,开机自动运行mount命令 方法一、使用Autofs 1、Autofs的特点:Autofs与Mount/Umount的不同之处在于,它是一种看守程序(deamon)。如果它检测到用户正试图访问一个尚未挂接的文件系统,它就会自动检测该文件系 统,如果该文件系统存在,那么Autof转载 2007-04-04 11:01:00 · 1129 阅读 · 0 评论 -
关于ssize_t的定义
This data type is used to represent the sizes of blocks that can be read or written in a single operation. It is similar to size_t, but must be a signed type.以上是GNU C的定义,就是说:这个数据类型用来表示可以被执行读写操作的数据块的翻译 2007-04-05 10:25:00 · 3350 阅读 · 1 评论 -
关于inet_addr和inet_pton的说明
首先,inet_pton是一个支持IPV6的新函数,它把ASII命令行参数如"192.168.103.5"变换到合适的格式.老代码中都使用inet_addr函数,但它有许多限制,inet_pton则改正了这些缺陷.原创 2007-04-01 12:49:00 · 7618 阅读 · 0 评论 -
使您的軟體執行起來: 防止緩衝區溢位
透過防禦性程式化保護程式碼 級別: 入門 Gary McGrawReliable Software转载 2007-06-27 18:48:00 · 2562 阅读 · 0 评论