
《unix环境高级编程》
小_鱼
这个作者很懒,什么都没留下…
展开
-
符号链接
符号链接是指向一个文件的间接指针。他与上一节所诉的硬链接不同。硬链接直接指向文件的i节点。引入符号链接的原因是为了避开硬链接的一些限制。硬链接通常要求链接和文件位于同一文件系统中。只有超级用户才能创建指向目录的硬链接。对符号链接以及他指向何种对象并无任何文件系统限制。任何用户都可以创建指向目录的符号链接。符号链接一般用于将一个文件或这个目录结构移动到系统中的另一个位置。转载 2013-08-29 15:15:15 · 2360 阅读 · 0 评论 -
同一进程中的线程究竟共享哪些资源
线程共享的环境包括:进程代码段、进程的公有数据(利用这些共享的数据,线程很容易的实现相互之间的通讯)、进程打开的文件描述符、信号的处理器、进程的当前目录和进程用户ID与进程组ID。 进程拥有这许多共性的同时,还拥有自己的个性。有了这些个性,线程才能实现并发性。这些个性包括: 1.线程ID 每个线程都有自己的线程ID,这个ID在本进程中是转载 2013-09-19 16:12:10 · 523 阅读 · 0 评论 -
Socket网络编程常用的结构及函数小结
Socket网络编程常用的结构及函数小结 IP地址的作用是标示计算机的网卡地址,每台计算机都有一个IP地址;端口,是指计算机中为了标示在计算机中访问网络的不同程序而设的编号,并不是网卡接线的端口,而是不同程序的逻辑编号,并不是实际存在的;域名,是用来代替IP地址来标示计算机的一种直观名称,例如百度网站的IP地址是202.108.22.43,这个IP地址没有任何逻辑含义,不便记忆,而w转载 2013-09-30 19:16:33 · 432 阅读 · 0 评论 -
Linux多线程编程
#include #include #include #include #define MAX 10 pthread_t thread[2]; pthread_mutex_t mut; int number=0, i; void *thread1() { printf ("thread1 : I'm thr转载 2013-09-07 23:31:48 · 492 阅读 · 0 评论 -
一个简单的线程池
//threadpool.h #ifndef __THREADPOOL_H__ #define __THREADPOOL_H__ #include typedef void* (*task_fun)(void*); //用链表来维护等待任务 typedef struct threadtask {转载 2013-09-07 23:47:24 · 629 阅读 · 0 评论 -
Linux终端设备详解
终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。tty是Teletype的缩写。Teletype是最早出现的一种终端设备,很象电传打字机(或者说就是),是由Teletype公司生产的。在Linux系统的设备特殊文件目录/dev/下,终端特殊设备文件一般有以下几种:1.串行端口终端(/dev/ttySn)串行端口终端(Serial Port转载 2013-09-07 23:46:16 · 561 阅读 · 0 评论 -
Linux下互斥量与条件变量详细解析
1. 首先pthread_cond_wait 的定义是这样的pthread_cond_wait() 必须与pthread_mutex 配套使用。(wait的内部操作:一进入wait状态就unclock,在wait结束前lock)pthread_cond_wait()函数一进入wait状态就会自动release mutex.In Thread1:转载 2013-09-07 23:21:54 · 601 阅读 · 0 评论 -
进程间关系
Linux的进程相互之间有一定的关系。比如说,在Linux进程基础中,我们看到,每个进程都有父进程,而所有的进程以init进程为根,形成一个树状结构。我们在这里讲解进程组和会话,以便以更加丰富的方式了管理进程。 1. 进程组 (process group)每个进程都会属于一个进程组(process group),每个进程组中可以包含多个进程。进程组会有一个进程组领导进程 (转载 2013-09-07 23:39:01 · 660 阅读 · 0 评论 -
调用 fork() 两次以避免僵死进程
当我们只fork()一次后,存在父进程和子进程。这时有两种方法来避免产生僵尸进程:父进程调用waitpid()等函数来接收子进程退出状态。父进程先结束,子进程则自动托管到Init进程(pid = 1)。 目前先考虑子进程先于父进程结束的情况: 若父进程未处理子进程退出状态,在父进程退出前,子进程一直处于僵尸进程状态。若父进程调用waitpid()(这里使用原创 2013-09-07 23:12:39 · 691 阅读 · 0 评论 -
进程控制
程控制的主要任务是对系统中所有进程从产生、存在到消亡的全过程实行有效的管理和控制。进程控制一般是由操作系统的内核来实现,内核在执行操作时,往往是通过执行各种原语操作来实现的,以下介绍进程的各种控制。进程图 有向树 程图是一棵有向树(如左图),结点代表进程,转载 2013-09-07 23:06:43 · 619 阅读 · 0 评论 -
使用system函数时应该忽略两个信号
在8.13节,我们展示了一个system函数的实现。然而,那个版本没有处理信号。POSIX.1要求system忽略SIGINT和SIGQUIT并阻塞SIGCHLD。在展示正确处理这些信号的版本之前,我们看下为什么需要担心这些信号的处理。下 面的代码使用了8.13节的system版本来调用ed编辑器。(这个编辑器作为UNIX系统的一部分已经有很长时间了。我们在这里转载 2013-08-30 08:32:57 · 801 阅读 · 0 评论 -
信号实现父子进程之间的同步--sigsuspend的作用
函数原型: #include int sigsuspend(const sigset_t *mask);作用: 用于在接收到某个信号之前,临时用mask替换进程的信号掩码,并暂停进程执行,直到收到信号为止。 也就是说,sigsuspend后,进程就挂在那里,等待着开放的信号的唤醒。系统在接收到信号后,马上就把现在的信号集还原转载 2013-08-30 10:26:58 · 974 阅读 · 0 评论 -
Select和epoll的区别
当一个节点和多个节点建立连接时,如何高效的处理多个连接的数据,下面具体分析两者的区别。1. select函数函数原型:int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);参数介绍:(1)nfds -- fdset集合中最大转载 2013-10-26 23:14:38 · 484 阅读 · 0 评论