
高级编程
奔跑的蜗牛0510
这个作者很懒,什么都没留下…
展开
-
UNIX的守护进程(服务器)
UNIX的守护进程(服务器)基本上有两类: . 总在运行的服务器 当操作系统启动的时候,这些服务器从/etc/rc等启动文件自动启动。在引导时间启动的服务器通常应当对用户的请求提供快速的服务,必须从单个服务器过程中处理很多网络请求或者两者都需要。这类服务器通常有sendmail,httpd等。 .只当需要时才运行的服务器 这些服务器总是从i原创 2012-05-28 14:08:31 · 487 阅读 · 0 评论 -
Linux下转换字符集(UTF8转换) 借鉴此文自己已成功在LInux上实现gtk中 从UTF8到GB2312
在LINUX上进行编码转换时,既可以利用iconv函数族编程实现,也可以利用iconv命令来实现,只不过后者是针对文件的,即将指定文件从一种编码转换为另一种编码。 一、利用iconv函数族进行编码转换 iconv函数族的头文件是iconv.h,使用前需包含之。 #include iconv函数族有三个函数,原型如下: (1) iconv_t iconv_open(const char原创 2012-12-31 16:28:50 · 1376 阅读 · 0 评论 -
获得主机IP
gethostbyname将返回一个struct hostent的指针,这个结构定义如下: struct hostent { char *h_name; /* official name of host */ char **h_aliases; /* alias list */ int h_addrtype; /*转载 2012-10-23 19:08:52 · 431 阅读 · 0 评论 -
线程的退出
2.线程的退出 2.1 线程的正常退出处理: 1.可预知的错误发生时,应对处理:使整个程序stop的方法 设置全局的开关 ,在主进程和线程中使用【线程中使用extern 进行引用】,当主进程或线程中的开关发生变化,要求退出时,所有线程退出,主进程调用函数pthread_join()阻塞式的等待所有线程的退出。 2.可预知的错误发生时,应对处理:使整个程序stop的方转载 2012-10-23 19:01:50 · 513 阅读 · 0 评论 -
线程的互斥锁
1.线程的互斥锁 1.1. 初始化: 在Linux下, 线程的互斥量数据类型是pthread_mutex_t. 在使用前, 要对它进行初始化: 对于静态分配的互斥量, 可以把它设置为PTHREAD_MUTEX_INITIALIZER, 或者调用pthread_mutex_init. 对于动态分配的互斥量, 在申请内存(malloc)之后, 通过pthread_mutex_init进行初始化转载 2012-10-23 19:00:06 · 461 阅读 · 0 评论 -
socket编程问题-SIGPIPE信号处理
socket编程问题 SIGPIPE信号问题========================= 当服务器close一个连接时,若client端接着发数据。根据TCP协议的规定,会收到一个RST响应,client再往这个服务器发送数据时,系统会发出一个SIGPIPE信号给进程,告诉进程这个连接已经断开了,不要再写了。 根据信号的默认处理规则SIGPIPE信号的默认执行动作是termin转载 2012-10-23 19:03:35 · 539 阅读 · 0 评论 -
mmap函数的用法
mmap函数的用法 (2005-11-06 09:14) 分类: C/C++ 改自Wrox《Linux程序设计》 #include #include #include #include #include typedef struct { int integer; char string[24]; }RECORD; #de原创 2012-09-08 09:33:11 · 810 阅读 · 0 评论 -
TCP/IP编程中协议无关性的函数getaddrinfo()
一、getaddrinfo函数介绍: gethostbyname和gethostbyaddr这两个函数仅仅支持IPv4,getaddrinfo函数能够处理名字到地址以及服务到端口这两种转换,返回的是一个sockaddr结构的链表而不是一个地址清单。这些sockaddr结构随后可由套接口函数直接使用。如此以来,getaddrinfo函数把协议相关性安全隐藏在这个库函数内部。应用程序只要原创 2012-08-13 21:03:27 · 711 阅读 · 0 评论 -
ioctl函数参数
网络程序(一般是服务器程序)中ioctl常用于在程序启动时获得主机上所有接口的信息: 接口的地址、接口是否支持广播、是否支持多播等等。 #include or #include int ioctl(int fd, int request, …/*void *arg */); 返回:成功返回0,出错返回-1; 下表列出了网络相关ioctl 请求的原创 2012-08-07 08:23:04 · 1710 阅读 · 0 评论 -
进一步了解vfork()函数
在《UNIX环境高级编程》一书的第八章中,有一道课后习题如下: 回忆图7-3典型的存储空间布局。由于对应于每个函数调用的栈帧通常存储在栈中,并在调用vfork后,子进程运行在父进程的地址空间中,如果不是在main函数中而是在另一个函数中调用vfork,以后子进程从该函数返回时,将会发生什么情况? 作者Rich Stevens是一位大师,留下这么一题必有其深意,于是结合《深入理解计算机系转载 2012-08-02 20:50:12 · 551 阅读 · 0 评论 -
Linux wait函数解析
进程一旦调用了 wait,就立即阻塞自己,由wait自动分析是否当前进程的某个子进程已经退出,如果让它找到了这样一个已经变成僵尸的子进程,wait 就会收集这个子进程的信息, 并把它彻底销毁后返回;如果没有找到这样一个子进程,wait就会一直阻塞在这里,直到有一个出现为止。 wait(等待子进程中断或结束) 相关函数 waitpid,fork 表头文件 #include #inclu原创 2012-05-30 18:34:54 · 385 阅读 · 0 评论 -
网络编程总结
几种网络编程方式: ISAPI、CGI、WinInet、Winsock 它们之间的区别: 1) ISAPI主要是开发基于浏览器客户端与服务器端程序。效率比CGI方式高,而且也扩展了CGI没有的一些功能。(基于TCP/IP模型中的应用层) 2) CGI主要是开发基于浏览器客户端与服务器端程序。(基于TCP/IP模型中的应用层) 3) WinInet主要是开发客户端程序。(基于TCP/原创 2012-05-31 08:03:25 · 1050 阅读 · 1 评论 -
linux mmap 详解
一.前言 mmap的具体实现以前在学习内核时学习过,但是对于其中的很多函数是一知半解的,有些只能根据其函数名来猜测其具体的功能,在本文中,一起来重新深入理解其具体的实现。 二.mmap的用户层应用 void *mmap(void *start,size_t length,int prot,int flags,int fd,off_t offsize); 具体参数含义 start :转载 2012-05-30 18:38:42 · 876 阅读 · 0 评论 -
exec函数族的使用
exec用被执行的程序完全替换调用它的程序的影像。fork创建一个新的进程就产生了一个新的PID, exec启动一个新程序,替换原有的进程,因此这个新的被exec执行的进程的PID不会改变, 和调用exec函数的进程一样。 int exec…装入和运行其它程序: int execl( char *pathname,char *arg0,char *arg1,...,char原创 2012-05-30 18:36:39 · 423 阅读 · 0 评论 -
mmap 共享 内存映射
mmap 功能描述: mmap将一个文件或者其它对象映射进内存。文件被映射到多个页上,如果文件的大小不是所有页的大小之和,最后一个页不被使用的空间将会清零。munmap执行相反的操作,删除特定地址区域的对象映射。 基于文件的映射,在mmap和munmap执行过程的任何时刻,被映射文件的st_atime可能被更新。如果st_atime字段在前述的情况下没有得到更新,首次对映射区的第一个页索引时转载 2012-05-30 18:42:30 · 548 阅读 · 0 评论 -
广播 组播 单播
广播: 主机之间一对所有的通讯模式,网络对其中每一台主机发出的信号都进行无条件复制并转发,所有主机都可以接收到所有信息(不管你是否需要),由于其不用路径选择,所以其网络成本可以很低廉。有线电视网就是典型的广播型网络,我们的电视机实际上是接受到所有频道的信号,但只将一个频道的信号还原成画面。在数据网络中也允许广播的存在,但其被限制在二层交换机的局域网范围内,禁止广播数据穿过路由器,防止广播数据影原创 2012-12-31 16:31:10 · 688 阅读 · 0 评论