摘要: 1、unix风格的错误机制下,当函数,如wait执行出错后,it returns -1 and sets the global variable errno to an error code that indicate the cause of the error.如果成功,则返回有用的结果。 if ((pid = wait(NULL)) < 0) { fprintf(stderr, "wait... 阅读全文
posted @ 2011-07-30 13:33 浪里飞 阅读(485) 评论(0) 推荐(0) 编辑
摘要: 一、排版1.相对独立的程序块之间、变量声明之后必须加空行。int conn_fd;int ret; conn_fd = socket(AF_INET, SOCK_STREAM,0);if (conn_fd < 0) { perror("socket create");}2.程序块要采用缩进风格编写,缩进为4个空格或一个Tab键。3.对于较长的语句(超过个80字符)要分成多行书写,划分出的新行要进行适当的缩进,使排版整齐,语句可读。对于参数较长的函数也要划分成多行。ret = connect(conn_fd, (struct sockaddr *)&serv_a 阅读全文
posted @ 2011-07-30 13:00 浪里飞 阅读(3606) 评论(0) 推荐(0) 编辑
摘要: 在前面曾总结过微软环境下编程的规范【1】,但是在linux下,没有自动补起,以及没有像VS那样高级好用的可视化开发工具,如果变量,函数定义太复杂,敲的也累,下面总结linux下编程风格,资料来源于网络。一、GNU风格1.函数返回类型说明和函数名分两行放置,函数起始字符和函数开头左花括号放到最左边,例如:static char *main (argc, argv) int argc; char *argv[];{ ......}或者是用标准C:static char *main (int argc, char *argv[]){ ......}如果参数太长不能放到一行,请在每行参数开头处对齐:i 阅读全文
posted @ 2011-07-30 11:36 浪里飞 阅读(1209) 评论(1) 推荐(0) 编辑
摘要: 1、基于预线程化(prethreading)的并发服务器常规的并发服务器中,我们为每一个客户端创建一个新线程,代价较大。一个基于预线程化的服务器通过使用“生产者-消费者模型”来试图降低这种开销。服务器由一个主线程和一组worker线程组成的,主线程不断地接受来自客户端的连接请求,并将得到的连接描述符放在一个共享的缓冲区中。每一个worker线程反复从共享缓冲区中取出描述符,为客户端服务,然后等待下一个描述符。示例代码/* * echoservert_pre.c - A prethreaded concurrent echo server *//* $begin echoservertprema 阅读全文
posted @ 2011-07-30 10:51 浪里飞 阅读(986) 评论(0) 推荐(0) 编辑