linux
文章平均质量分 54
freezgw1985
这个作者很懒,什么都没留下…
展开
-
守护进程
Linux服务器在启动时需要启动很多系统服务,它们像本地和网络用户提供了Linux的系统功能接口,直接面向应用程序和用户。提供这些服务的程序是由运行在后台的守护进程(daemons)来执行的。守护进程是生存期长的一种进程。它们独立于终端并且周期性的执行某种任务或等待处理某些发生的事件。它们通常是系统引导转入时启动,在系统关闭时终止。Linux的的大多数服务器就是用守护进程实现的。比如,Int转载 2010-04-28 14:41:00 · 569 阅读 · 0 评论 -
消息队列的设计与实现
简介消息驱动机制是 GUI 系统的基础,消息驱动的底层基础设施之一是消息队列, 它是整个 GUI 系统运转中枢,本文介绍了一个基于环形队列的消息队列实现方 法,给出了它的数据结构、主要操作流程和核心代码。环形队列环行队列是一种首尾相连的队列数据结构,遵循先进先出原则,如下图所示:ring buffer 示意图 在环形队列中用一组连续地转载 2010-05-22 21:44:00 · 1244 阅读 · 0 评论 -
POSIX多线程——基本线程管理函数介绍
<br />POSIX基本的几个线程管理函数见下表:------------------------------------------------------------------------------------------ POSIX函数 描述-----------------------------------------------------原创 2010-07-22 00:04:00 · 1373 阅读 · 1 评论 -
sleep()的实现原理
sleep()的实现分为三步: 1.注册一个信号signal(SIGALRM,handler)。接收内核给出的一个信号。 2.调用alarm()函数。 3.pause()挂起进程。 实例代码:#include #include #include #include ///时原创 2010-05-28 22:44:00 · 9896 阅读 · 2 评论 -
linux下测试多个信号
在linux中测试多个信号,我觉得有俩个问题必须要搞清楚: (1)如果进程还在处理一个SIGX时候,第二个信号SIGY又到来了,会发生什么呢? (2)如果消息到来时,程序正在处理read()之类的输入而阻塞,那会如何呢? 先来看断程序: /* ================================================原创 2010-05-29 00:08:00 · 807 阅读 · 0 评论 -
信号处理——sigaction
sigaction是POSIX中的信号处理时的设置函数,一个接收到多个消息的进程,如何响应多个信号?需要解决以下四个问题(比前文的多两个) (1)处理函数每次使用之后都要被禁用吗? (2)如果SIGY消息再进程处理SIGX消息时,到达会发生什么情况? (3)如果进程再处理前一个SIGX消息时,另一个SIGX又来到会发生什么情况? (4)如果消息来到时,程序正在处理read类原创 2010-05-29 16:12:00 · 869 阅读 · 0 评论 -
Linux下select函数实现的聊天服务器
<br /><br />消息缓冲区类MessageBuffer,接收线程将受到的消息放入缓冲区,发送线程从缓冲区中取出消息<br />MessageBuffer.h<br /> //MessageBuffer.h #ifndef _MESSAGE_BUF_INCLUDE_ #define _MESSAGE_BUF_INCLUDE_ #include <pthread.h> #define MESSAGE_COUNT 16 #define MESSAGE_LENGTH 2048 class Mes原创 2010-06-04 16:07:00 · 917 阅读 · 0 评论 -
fd_set 用法
<br /><br />select()函数主要是建立在fd_set类型的基础上的。fd_set(它比较重要所以先介绍一下)是一组文件描述字(fd)的集合,它用一位来表示一个fd(下面会仔细介绍),对于fd_set类型通过下面四个宏来操作: <br /> <br /> <br /> fd_set set;<br /> <br /> <br /> FD_ZERO(&set); /* 将set清零使集合中不含任何fd*/<br /> <br /> <br /> FD_SET(fd,转载 2010-06-07 14:44:00 · 775 阅读 · 0 评论 -
Linux中send()函数和recv()函数
<br /><br />int send( SOCKET s, const char FAR *buf, int len, int flags );<br /> 不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据。客户程序一般用send函数向服务器发送请求,而服务器则通常用send函数来向客户程序发送应答。<br /> 该函数的第一个参数指定发送端套接字描述符;<br /> 第二个参数指明一个存放应用程序要发送数据的缓冲区;<br /> 第三个参数指明实际要发转载 2010-06-09 14:33:00 · 1840 阅读 · 0 评论 -
linux 串口编程
<br />在嵌入式Linux中,串口是一个字设备,访问具体的串行端口的编程与读/写文件的操作类似,只需打开相应的设备文件即可操作。串口编程特殊在于串口通信时相关参数与属性的设置。嵌入式Linux的串口编程时应注意,若在根文件中没有串口设备文件,应使用mknod命令创建,这这里假设串口设备是/dev/ttyS0,介绍一下串口的编程过程。<br />#mknod /dev/ttyS0 c 4 64<br />1、打开串口<br /> 打开串口设备文件的操作与普通文件的操作类似,都采用标准的I/O操原创 2010-08-04 22:54:00 · 6849 阅读 · 1 评论 -
dup()和dup2()解惑
<br /><br />1. 文件描述符在内核中数据结构<br /> 在具体说dup/dup2之前, 我认为有必要先了解一下文件描述符在内核中的形态。<br />一个进程在此存在期间,会有一些文件被打开,从而会返回一些文件描述符,从shell<br />中运行一个进程,默认会有3个文件描述符存在(0、1、2), 0与进程的标准输入相关联,<br />1与进程的标准输出相关联,2与进程的标准错误输出相关联,一个进程当前有哪些打开<br />的文件描述符可以通过/proc/进程ID/fd目录查看。 下图可原创 2010-07-17 21:30:00 · 703 阅读 · 0 评论 -
wait() 和 waitpid() 的区别
父进程可能比子进程早结束,如果父进程要阻塞以等待子进程,可以使用wait或waitpid函数,wait函数只是waitpid函数的简化版。 #include #pid_t wait (int * statloc); #pid_t waitpid (pid_t pid, int * statloc, int optins); 区别: 在原创 2010-05-19 20:13:00 · 1523 阅读 · 0 评论 -
linux下命令行下编译c程序
-------------------------------------------Linuxmine收集整理 作者:linux宝库 (http://www.linuxmine.com) 时间:2006-10-11-------------------------------------------C 是所有版本的UNIX上的系统语言.C 在过去的二十年中有了很大的发展. 在80年代末期美国转载 2010-05-19 17:46:00 · 1368 阅读 · 0 评论 -
信号集与屏蔽字
<br /><br />1.信号集和信号集处理函数<br />信号集是一个位向量,其中每一位对应着linux系统的一个信号。可使用如下函数对信号集进行处理:1#include <signal.h>2 3int sigemptyset(sigset_t * set);4 5int sigfillset(sigset_t * set);6 7int sigaddset(sigset_t * set);8 9int sigdelset(sigset_t * set);<br />sigemptyset将一个信号集转载 2010-06-30 20:59:00 · 899 阅读 · 0 评论 -
Linux下用eclipse写C/C++语言程序的编译问题
当要建立线程等时,在Linux下,用文本编辑,在键入“g++ -lpthread”.......“可以把库pthread引入”,编译通过。现在想用eclipse,但是默认情况下,引入不了pthread。会报“undefined reference to phread_create”等错误。 解决方法:可以在project中好到properties 在里面的“Tool Setti原创 2010-05-10 13:03:00 · 1075 阅读 · 0 评论 -
getopt()函数
具体的函数为:int getopt(int argc, char * const argv[], const char *optstring); 函数getopt()有三个参数,argc和argv[]应该不需要多说,下面说一下字符串optstring,它是作为选项的字符串的列表。 函数getopt()认为optstring中,以-’开头的字符(注意!不是字符串!!)原创 2010-05-12 17:14:00 · 551 阅读 · 0 评论 -
linux中的守护进程daemon
一. 守护进程及其特性(1)最重要的特征是后台运行(2)必须与运行前的环境隔离开来。这些环境通常是守护进程从执行它的父进程中继承下来的。环境包 括还未关闭的文件描述符,控制终端,会话和进程组,工作目录以及文件创建淹模等。(3)启动方式。可以由用户终端执行,也可以从启动脚本/etc/rc.d中启动。总之,编写守护进程实际上是把一个普通进程按照上述的守护进程的特性改造成为守护进程原创 2010-05-12 21:45:00 · 825 阅读 · 0 评论 -
XML文件的解析--libxml库函数解释
libxml(一) 摘要 Libxml是一个有免费许可的用于处理XML、可以轻松跨越多个平台的C语言库。这个指南提供它的基本函数的例子。绪论 Libxml是一个实现读、创建及操纵XML数据功能的C语言库。这个指南提供例子代码并给出它基本功能的解释。在这个项目的主页上有Libxml及更多关于它可用的资料。包含有完整的API文转载 2010-05-12 09:51:00 · 600 阅读 · 0 评论 -
用libevent进行网络编程(fork,thread,event_based)
<br /><br />用libevent进行网络编程(fork,thread,event_based)<br /> <br />1、我们知道处理多用户时有几种方法:<br />(1)、fork():一个新的connection()进来,用fork()产生一个process处理。<br />(2)、pthread_create()产生一个新的thread处理。<br />(3)、把新的connection丢入Event-based Array,然后由Main Process以Nonblocking方式处理所原创 2010-07-09 15:42:00 · 7042 阅读 · 0 评论 -
libevent源码分析
from:blog.csdn.net/karlxu/archive/2007/09/30/1808095.aspx libevent实现了网络IO,timer,signal的事件触发机制. 可以很方便的应用于event-driven服务器中,作为其底层事件处理模块. 比较成功的案例有 memcache(分布式缓存), PLB(负载均衡器)等. 最近研究了一下libevent的源码,转载 2010-05-15 17:25:00 · 729 阅读 · 0 评论 -
Linux Epoll介绍和程序实例
<br />装载自:http://blog.csdn.net/sparkliang/archive/2009/11/05/4770655.aspx<br /> <br /> <br /> <br />Linux Epoll介绍和程序实例<br />1. Epoll 是何方神圣?<br />Epoll 可是当前在 Linux 下开发大规模并发网络程序的热门人选, Epoll 在 Linux2.6 内核中正式引入,和 select 相似,其实都 I/O 多路复用技术而已 ,并没有什么神秘的。<br />其实在转载 2010-07-14 15:12:00 · 788 阅读 · 0 评论 -
socket头文件
一 三种类型的套接字:1.流式套接字(SOCKET_STREAM) 提供面向连接的可靠的数据传输服务。数据被看作是字节流,无长度限制。例如FTP协议就采用这种。2.数据报式套接字(SOCKET_DGRAM) 提供无连接的数据传输服务,不保证可靠性。3.原始式套接字(SOCKET_RAW) 该接口允许对较低层次协议,如IP,ICMP直接访问。二 基本套接字系统调有有如下一些:转载 2010-05-19 16:32:00 · 27685 阅读 · 3 评论 -
linux下时间time()
<br />#include <time.h> <br />time_t time(time_t *calptr) <br />这是time函数基本框架 指针指向的一串数字达不到毫秒极的信息。 <br /><br />然后使用以下两个函数将其进行标准时间转换 <br />#include <time.h> <br />struct tm *gmtime(const time_t *calptr) /*将其转换为国际标准时间*/ <br />struct原创 2010-06-13 03:28:00 · 6075 阅读 · 0 评论