随笔分类 -  C语言

摘要:我想有很多朋友和我一样,想要了解APACHE NGINX的工作原理,最终能独立写一个服务器。我对C语言开发几乎一窍不通,看了网上的很多文章,都是先讲SOCKET编程等等几百页之后,才能讲到这里,学习起来很痛苦,经常思考是否可以另外一种方式,倒叙的方式让其他的人学习起来不那么痛苦。好吧废话少说,咱们开始吧~今天要做的工作目标:配置环境,浏览源代码。一、下载WEBSERVER程序(下载)二、安装。make三、启动服务器端服务。./shttpd[root@sysadmin webserver]# ./shttpd sHTTPD ListenPort: 8062 MaxClient: 4 ... 阅读全文
posted @ 2013-04-04 14:02 李秋 阅读(461) 评论(0) 推荐(0) 编辑
摘要:昨天和同事讨论了一下这个函数,在网络上搜了一下,答案都是函数的基本概念,为什么是大端模式(big-endian),而没有解释为什么使用大端模式(big-endian)。首先说明一下概念uint16_t htons(uint16_t hostshort); htons的功能:将一个无符号短整型数值转换为网络字节序,即大端模式(big-endian) 参数u_short hostshort: 16位无符号整数 返回值:TCP / IP网络字节顺序 htons 是把你机器上的整数转换成“网络字节序”, 网络字节序是 big-endian,也就是整数的高位字节存放在内存的低地址处。 而我们常用... 阅读全文
posted @ 2013-03-26 13:59 李秋 阅读(14026) 评论(0) 推荐(2) 编辑
摘要:1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <errno.h> 4 #include <string.h> 5 #include <sys/types.h> 6 #include <netinet/in.h> 7 #include <sys/socket.h> 8 #include <sys/wait.h> 9 #include <unistd.h> 10 #include <arpa/inet.h> 11 in 阅读全文
posted @ 2013-03-25 19:34 李秋 阅读(475) 评论(0) 推荐(0) 编辑
摘要:CLIENT 1 #include <stdio.h> 2 #include <string.h> 3 #include <errno.h> 4 #include <sys/socket.h> 5 #include <resolv.h> 6 #include <stdlib.h> 7 #include <netinet/in.h> 8 #include <arpa/i... 阅读全文
posted @ 2013-03-25 19:20 李秋 阅读(295) 评论(0) 推荐(0) 编辑
摘要:1 #include <stdio.h> 2 #include <string.h> 3 #include <errno.h> 4 #include <sys/socket.h> 5 #include <resolv.h> 6 #include <stdlib.h> 7 #include <netinet/in.h> 8 #include <arpa/inet.h>... 阅读全文
posted @ 2013-03-25 18:49 李秋 阅读(392) 评论(0) 推荐(0) 编辑
摘要:1 #include <stdio.h> 2 #include <string.h> 3 #include <errno.h> 4 #include <sys/socket.h> 5 #include <resolv.h> 6 #include <stdlib.h> 7 #include <netinet/in.h> 8 #include <arpa/inet.h> 9 #include <unistd.h> 10 #define MAXBUF 10 11 int main(int ar 阅读全文
posted @ 2013-03-25 18:30 李秋 阅读(266) 评论(0) 推荐(0) 编辑
摘要:#include <stdio.h>#include <string.h>#include <errno.h>#include <sys/socket.h>#include <resolv.h>#include <stdlib.h>#include <netinet/in.h>#include <arpa/inet.h>#include <unistd.h>#define MAXBUF 1024int main(int argc, char **argv){ int sockfd; st 阅读全文
posted @ 2013-03-25 13:28 李秋 阅读(428) 评论(0) 推荐(0) 编辑
摘要:在Linux中,用命令行执行可执行文件时可能会涉及到给其加入不同的参数的问题,例如:./a.out -a1234 -b432 -c -d程序会根据读取的参数执行相应的操作,在C语言中,这个功能一般是靠getopt()这个函数,结合switch语句来完成的,首先来看下面的代码:#include <stdio.h>#include <unistd.h>int main(int argc,char *argv[]){ int ch; opterr=0; while((ch=getopt(argc,argv,"a:b::cde"))!=-1) { print 阅读全文
posted @ 2013-03-19 09:41 李秋 阅读(473) 评论(0) 推荐(0) 编辑
摘要:一、Shell变量分为本地变量和环境变量。1、本地变量:在用户现有运行的脚本中使用a) 定义本地变量 格式: variable-name=valueb) 显示本地变量 格式: setc) 清除本地变量 格式:unset variable-name2、环境变量:在所有的子进程中使用 a) 定义环境变量 格式: export variable-name=value (与本地变量的定义相比,多了一个export关键字) b) 显示环境变量 格式: env (本地变量的显示使用set,环境变量的显示使用env) c) 清除环境变量 格式:unset variable-name (用法与本地变量相同,都 阅读全文
posted @ 2013-03-12 20:35 李秋 阅读(306) 评论(0) 推荐(0) 编辑
摘要:Linux 的变量可分为两类:环境变量和本地变量 环境变量,或者称为全局变量,存在与所有的shell 中,在你登陆系统的时候就已经有了相应的系统定义的环境变量了。Linux 的环境变量具有继承性,即子shell 会继承父shell 的环境变量。 本地变量,当前shell 中的变量,很显然本地变量中肯定包含环境变量。Linux 的本地变量的非环境变量不具备继承性。一、Linux 中环境变量的文件 当你进入系统的时候,linux 就会为你读入系统的环境变量,这些环境变量存放在什么地方,那就是环境变量的文件中。Linux 中有很多记载环境变量的文件,它们被系统读入是按照一定的顺序的。1. /et.. 阅读全文
posted @ 2013-03-12 15:11 李秋 阅读(311) 评论(0) 推荐(0) 编辑
摘要:gcc/g++在执行编译工作的时候,总共需要4步 (1) 预处理,生成.i的文件[预处理器cpp] (2) 将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs] (3) 有汇编变为目标代码(机器代码)生成.o的文件[汇编器as] (4) 连接目标代码,生成可执行程序[链接器ld][参数详解] 设定文件所使用的语言,使后缀名无效,对以后的多个有效.也就是根据约定C语言的后缀名称是.c的,而C++的后缀名是.C或者.cpp,如果你很个性,决定你的C代码文件的后缀名是.pig 哈哈,那你就要用这参数,这个参数对他后面的文件名都起作用,除非到了下一个参数的使用。可以使用的... 阅读全文
posted @ 2013-03-09 18:19 李秋 阅读(298) 评论(0) 推荐(0) 编辑
摘要:1. 概述 在前面各章中,已多次使用过以“#”号开头的预处理命令。如包含命令# include,宏定义命令# define等。在源程序中这些命令都放在函数之外, 而且一般都放在源文件的前面,它们称为预处理部分。 所谓预处理是指在进行编译的第一遍扫描(词法扫描和语法分析)之前所作的工作。预处理是C语言的一个重要功能, 它由预处理程序负责完成。当对一个源文件进行编译时, 系统将自动引用预处理程序对源程序中的预处理部分作处理, 处理完毕自动进入对源程序的编译。 C语言提供了多种预处理功能,如宏定义、文件包含、 条件编译等。合理地使用预处理功能编写的程序便于阅读、修改、 移植和调试,也有利于模块... 阅读全文
posted @ 2013-03-09 00:34 李秋 阅读(122) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示