
Unix
文章平均质量分 71
安菲拉尔
这个作者很懒,什么都没留下…
展开
-
UNIX网络编程卷一 笔记 第7章 套接字选项
1 getsockopt和setsockopt函数套接字选项粗分为两大基本类型:一是启用或禁止某个特性的二元选项,二是取得并返回特定值的选项,参数都是以指针形式传入的。2 套接字状态下面的套接字选项是从监听套接字继承来的:SO_DEBUF、SO_DONTROUTE、SO_KEEPALIVE、SO_LINGER、SO_OOBINLINE、SO_RCVBUF、SO_RCVL原创 2013-07-12 17:07:01 · 907 阅读 · 0 评论 -
Unix下fork与pthread混用的问题
(先是来自云风的Blog)在 POSIX 标准中,fork 的行为是这样的:复制整个用户空间的数据(通常使用 copy-on-write 的策略,所以可以实现的速度很快)以及所有系统对象,然后仅复制当前线程到子进程。这里:所有父进程中别的线程,到了子进程中都是突然蒸发掉的。其它线程的突然消失,是一切问题的根源。我之前从未写过多进程多线程程序,不过公司里有 David Xu 同学(他转载 2013-04-25 15:42:37 · 1368 阅读 · 0 评论 -
UNIX网络编程卷二 笔记 管道和FIFO
第1章 管道和FIFO1.1 pipeint pipe(intfd[2]); 创建一个单向、半双工管道,其中fd[0]用于读,fd[1]用于写。1.2 fork管道很少在单个进程内使用,一般用在两个有亲缘关系的进程间,父进程在pipe后fork,然后和子进程或子进程的后裔利用这个管道通信。pipe(fd);if ((pid =fork()) == 0){原创 2013-08-01 10:48:25 · 1861 阅读 · 0 评论 -
UNIX网络编程卷二 笔记 读写锁和记录上锁
第4章 读写锁和记录上锁4.1 读写锁读写锁用于读取数据比修改数据更频繁的场景,它的分配规则如下:1. 没有线程持有写锁时,任意多的线程可以持有读锁。2. 仅当没有线程持有读锁或写锁时,才能分配写锁。当已有线程持有读锁时,另一线程申请写锁则会阻塞,若后续还有读锁的申请,此时有两种策略:1. 对后续的读锁请求都通过,可能会造成因读锁不断被分配,写锁申请始终阻塞原创 2013-08-06 11:56:20 · 1250 阅读 · 0 评论 -
UNIX网络编程卷二 笔记 Posix共享内存区
第6章 Posix共享内存区6.1 共享内存区共享内存区是可用IPC形式中最快的,只有映射和解除映射需要进入内核的系统调用,映射后对共享内存区的访问和修改不再需要系统调用(内核只要负责好页表映射和处理页面故障即可),但通常需要同步手段。一个客户-服务器间传递文件数据的例子中,FIFO或消息队列等IPC方式需要4次内核-进程间的数据复制,每次都需要切换地址空间,开销很大;共享内原创 2013-08-09 11:02:08 · 1070 阅读 · 0 评论 -
UNIX网络编程卷二 笔记 Posix消息队列
第2章 Posix消息队列2.1 概述每个消息都是一个有优先级的记录,进程写入消息前,不需要有其它进程在等待消息。消息队列具有随内核的持续性。Posix消息队列与System V消息队列的两个主要区别:1. Posix读返回最高优先级的最早消息,System V返回指定优先级的最早消息。2. 向空队列放置一个消息时,Posix可以产生一个信号或启动一个线程。原创 2013-08-03 15:16:43 · 1167 阅读 · 0 评论 -
UNIX网络编程卷二 笔记 互斥锁和条件变量
第3章 互斥锁和条件变量3.1 概述 默认情况下互斥锁和条件变量用于线程间同步,若将它们放在共享内存区,也能用于进程间同步。 对一个公共对象的访问若不能原子进行,就需要某种形式的同步。3.2 互斥锁 静态分配的互斥锁变量可以用常值PTHREAD_MUTEX_INITIALIZER初始化,动态分配和用于共享内存的互斥锁变量要用pthread_mutex_i原创 2013-08-04 10:39:39 · 1640 阅读 · 0 评论 -
UNIX网络编程卷二 笔记 Posix信号量
第5章 Posix信号量5.1 概述Posix信号量分为两种:1. 有名信号量:使用Posix IPC名字标识。2. 内存信号量:存放在共享内存区中。Posix信号量不必在内核中维护(System V信号量由内核维护),由可能为路径名的名字来标识。5.2 基本操作三种基本操作:1. 创建(create):指定初始值。2. 等待(wait):如果原创 2013-08-06 11:58:10 · 1531 阅读 · 0 评论 -
UNIX网络编程卷一 笔记 第一章 简介
在设计网络应用时,确定总是由客户发起请求往往能简化协议和程序本身。许多公司也构建自己的广域网,这些私有的广域网既可以连接到因特网上,也可以不连接到因特网。TCP是一个没有记录边界的字节流协议,如果数据量很大,就不能确保一次read能返回服务器的整个应答,因此从TCP套接字读取数据时,总是需要把read编写在某个循环中,当read返回0或负值时终止。如果应用程序需要确定记原创 2013-06-06 10:26:21 · 853 阅读 · 0 评论 -
linux signal 处理
源地址:http://blog.youkuaiyun.com/zhuixundelang/article/details/5979465linuxsignal 处理 说明:本文主要翻译自ULK 3rd chapter 11.主要受 http://blog.youkuaiyun.com/yunsongice 影响,故发表在csdn.另外,本文是最初版本,估计以后会有一个改进版本. 文中还有很多转载 2013-06-18 22:13:59 · 34607 阅读 · 0 评论 -
linux 异步I/O的实现
源地址:http://blog.youkuaiyun.com/zhang_shuai_2011/article/details/7678990知道异步IO已经很久了,但是直到最近,才真正用它来解决一下实际问题(在一个CPU密集型的应用中,有一些需要处理的数据可能放在磁盘上。预先知道这些数据的位置,所以预先发起异步IO读请求。等到真正需要用到这些数据的时候,再等待异步IO完成。使用了异步IO,在转载 2013-06-18 23:31:14 · 714 阅读 · 0 评论 -
UNIX网络编程卷一 笔记 第五章 TCP客户/服务器程序示例
1 概述本章主要实现的程序模型:2 TCP回射服务器程序服务器与客户程序约定一个固定的端口,要比5000大,比49152小。fork后子进程第一件事就是关掉listenfd,父进程的第一件事是关掉connfd。在等待客户的read调用返回出错后,如果是因为被信号打断,要重新调用read。3 正常启动监听套接字处于LISTEN状态。原创 2013-06-18 23:05:53 · 1276 阅读 · 0 评论 -
Linux中判断文件是否存在
用access函数access的第一个参数是文件路径,第二个参数是测试的模式。常用的有R_OK:测试读权限,W_OK:测试写权限,X_OK:测试执行权限,F_OK:测试文件是否存在;原创 2013-03-27 11:01:35 · 902 阅读 · 0 评论 -
转载:每个程序员都应该知道的8个Linux命令
原文:http://blog.jobbole.com/26991/每个程序员,在职业生涯的某个时刻,总会发现自己需要知道一些Linux方面的知识。我并不是说你应该成为一个Linux专家,我的意思是,当面对linux命令行任务时,你应该能很熟练的完成。事实上,学会了下面8个命令,我基本上能完成任何需要完成的任务。注意:下面的每个命令都有十分丰富的文档说明。这篇文章并不是来详尽的展示每个命转载 2012-10-30 22:43:38 · 928 阅读 · 0 评论 -
UNIX网络编程卷一 笔记 第六章 第6章 I/O复用
1 概述同时监视多个I/O条件,在其中任意一个就绪时通知进程,这样的能力称为I/O复用,由select和poll函数支持,较新的还有Posix中的pselect函数。(Linux中还多出了epoll)应用场合:1. 同时处理多个描述符时,必须用。2. 同时处理多个套接字时,比较少见。3. 既要处理监听套接字,又要处理已连接套接字。4.原创 2013-06-22 15:00:26 · 1136 阅读 · 0 评论 -
Linux strace命令
源地址:http://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316692.html简介strace常用来跟踪进程执行时的系统调用和所接收的信号。 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通 过系统调用访问硬件设备。strace可以跟转载 2013-06-18 23:28:31 · 584 阅读 · 0 评论 -
UNIX网络编程卷一 笔记 第四章 基本TCP套接字编程
1 socket函数int socket(int family, int type, intprotocol);其中family是协议族,type是套接字类型,protocol为某个协议组合,设为0的话是取family和type组合的系统默认值。常用的family值有:AF_INET(IPV4)、AF_INET6(IPV6)。常用的type值有:SOCK_STREA原创 2013-06-18 23:06:57 · 1217 阅读 · 0 评论 -
UNIX网络编程卷一 笔记 第三章 套接字编程简介
套接字编程简介1 套接字地址结构每个协议族定义的套接字地址结构均以sockaddr_开头。常用的几种套接字地址结构:1. IPV4:sockaddr_in。2. IPV6:sockaddr_in6。3. Unix域套接字:sockaddr_un。4. 数据链路:sockaddr_dl。为了能让不同的地址结构使用同一套处理函数,规定原创 2013-06-12 20:10:54 · 982 阅读 · 0 评论 -
UNIX网络编程卷一 笔记 第二章 传输层
传输层:TCP、UDP和SCTP1 概述UDP是一个简单的、不可靠的数据报协议,TCP是一个复杂、可靠的字节流协议。SCTP也是个可靠的传输协议,但它还提供消息边界等服务。2 UDP、TCP、SCTP应用进程往一个UDP套接字写入一个消息,该消息随后被封装到一个UDP数据报,它又被封装到一个IP数据报,然后发送。UDP不保证数据报是否到达、先原创 2013-06-12 19:22:48 · 1046 阅读 · 0 评论