Unix Network Programming Episode 2

本文记录了一次编译项目的经历,特别是解决了因config.h文件定义重复导致的编译错误,并分享了如何正确配置unpipc.h文件的方法。

偶然发现其实还有第二卷的源码,就一起编译了。

注意unpipc.h只有在bench下面的是有具体内容的,编译时要将它的内容复制到其他的unpipc.h中。

今天编译所有的项目发现,只要是其他目录中有相同的文件名且内容一致,文件就是空白的,需要自己复制过去。

./configure    # try to figure out all implementation differences

cd lib
make

cd ../pipe
make pipeconf
./pipeconf /tmp

有一个错误,提示config.h中

In file included from unpipc.h:7:0,
                 from daemon_inetd.c:1:
../config.h:56:17: error: two or more data types in declaration specifiers
 #define uint8_t unsigned char    /* <sys/types.h> */
                 ^
../config.h:56:26: error: two or more data types in declaration specifiers
 #define uint8_t unsigned char    /* <sys/types.h> */
                          ^
../config.h:57:18: error: two or more data types in declaration specifiers
 #define uint16_t unsigned short    /* <sys/types.h> */
                  ^
../config.h:57:27: error: two or more data types in declaration specifiers
 #define uint16_t unsigned short    /* <sys/types.h> */
                           ^
../config.h:58:18: error: two or more data types in declaration specifiers
 #define uint32_t unsigned int    /* <sys/types.h> */
                  ^
../config.h:58:27: error: two or more data types in declaration specifiers
 #define uint32_t unsigned int    /* <sys/types.h> */
                           ^
make: *** [<builtin>: daemon_inetd.o] Error 1

因此删除config.h中的

#define	uint8_t unsigned char				/* <sys/types.h> */
#define	uint16_t unsigned short				/* <sys/types.h> */
#define	uint32_t unsigned int				/* <sys/types.h> */

即可。

unpipc.h中加上

#define SEM_R    0400   //用户(属主)读
#define SEM_A    0200   //用户(属主)写
#define	SVSEM_MODE	(SEM_R | SEM_A | SEM_R>>3 | SEM_R>>6)
#define MSG_R 0400
#define MSG_W 0200
struct msgbuf
{
    long int mtype; /* type of received/sent message */
    char mtext[1]; /* text of the message */
};
UNIX Network Programming Volume 2》(Unix网络编程卷2英文版,djvu格式,带绿色小巧的阅读器) 原书名: UNIX Network Programming Volume 2:Interprocess Communications 2nd ed. 原出版社: Prentice Hall/Pearson 作者: W.Richard Stevens preface part 1. introduction chapter 1. introduction 1.1 introduction 3 1.2 processes, threads, and the sharing of information 5 1.3 persistence of ipc objects 6 1.4 name spaces 7 1.5 effect of fork, exec, and exit on ipc objects 9 1.6 error handling: wrapper functions 11 1.7 unix standards 13 1.8 road map to ipc examples in the text 15 1.9 summary 16 chapter 2. posix ipc 2.1 introduction 19 2.2 ipc names 19 2.3 creating and opening ipc channels 22 2.4 ipc permissions 25 2.5 summary 26 .chapter 3. system v ipc 3.1 introduction 27 3.2 key_t keys and ftok function 28 3.3 ipc_perm structure 30 3.4 creating and opening ipc channels 30 3.5 ipc permissions 32 3.6 identifier reuse 34 3.7 ipcs and ipcrm programs 36 3.8 kernel limits 36 3.9 summary 38 part 2. message passing chapter 4. pipes and fifos 4.1 introduction 43 4.2 a simple client--server example 43 4.3 pipes 44 4.4 full-duplex pipes 50 4.5 popen and pc1ose functions 52 4.6 fifos 54 4.7 additional properties of pipes and fifos 58 4.8 one server, multiple clients 60 4.9 iterative versus concurrent servers 66 4.10 streams and messages 67 4.11 pipe and fifo limits 72 4.12 summary 73 chapter 5. posix message oueues 5.1 introduction 75 5.2 mq_open, mq_c1ose, and mq_un1ink functions 76 5.3 mq_getattr and mq_setattr functions 79 5.4 mq_send and mq_receive functions 82 5.5 message queue limits 86 5.6 mq_notify function 87 5.7 posix realtime signals 98 5.8 implementation using memory-mapped i/o 106 5.9 summary 126 chapter 6. system v message queues 6.1 introduction 129 6.2 msgget function 130 6.3 msgsnd function 131 6.4 msgrcv function 132 6.5 msgctl function 134 6.6 simple programs 135 6.7 client-server example 140 6.8 multiplexing messages 142 6.9 message queues w
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值