Linux C 语言程序设计
文章平均质量分 82
ljtyzhr
在程序员的世界里遨游。
展开
-
Linux C语言程序设计(三)——函数的理解与自定义
1、函数我们在上一篇文章介绍到,一个求解从1到100之内的素数的问题,当中提到一个概念为函数。在C语言中,我们称之为函数,但是在JAVA里面,我们称之为一个方法。2、函数介绍2.1 数学函数不做过多介绍,是一些方法的封装,在C语言中封装了一些基本的算法,比如求解正弦和余弦等函数。#include #include int main(void){ double p原创 2015-07-08 20:08:04 · 846 阅读 · 0 评论 -
Linux C语言程序设计(十九)——基于UDP的网络编程
1、UDP协议 UDP协议是英文User Datagram Protocol的缩写,即用户数据报协议。它是一种面向非连接的协议,面向非连接指的是在正式通信前不必与对方先建立连接,不管对方状态就直接发送。至于对方是否可以接收到这些数据内容,UDP协议无法控制,因此UDP协议是一种不可靠的协议。UDP适用于一次只传送少量数据、对可靠性要求不高的应用和环境。由于没有建立连接的过程,原创 2015-09-13 16:31:38 · 1221 阅读 · 0 评论 -
Linux C语言程序设计(十八)——基于TCP的网络编程
1、基本流程下图是基于TCP协议的客户端/服务器程序的一般流程 服务器调用socket()、 bind()、 listen()完成初始化后,调用accept()阻塞等待,处于监听端口的状态,客户端调用socket()初始化后,调用connect()发出SYN段并阻塞等待服务器应答,服务器应答一个SYN-ACK段,客户端收到后从connect()返回,同时应答一个ACK原创 2015-09-12 23:40:20 · 1648 阅读 · 0 评论 -
Linux C语言程序设计(十七)——Socket编程的基础解析
1、socket概念socket这个词可以表示很多概念:1)在TCP/IP协议中, “IP地址+TCP或UDP端口号”唯一标识网络通讯中的一个进程, “IP地址+端口号”就称为socket。2)在TCP协议中,建立连接的两个进程各自有一个socket来标识,那么这两个socket组成的socket pair就唯一标识一个连接。 socket本身有“插座”的意思,因此用来描述网络连接的一原创 2015-09-05 15:06:02 · 739 阅读 · 0 评论 -
Linux C语言程序设计(十六)——TCP/IP协议基本解析
1、TCP/IP简介1.1 协议简介TCP/IP网络协议栈分为应用层(Application)、传输层(Transport)、网络层(Network)和链路层(Link)四层。如下左边图示: 两台计算机通过TCP/IP协议通讯的过程如上图右所示。传输层及其以下的机制由内核提供,应用层由用户进程提供(后面将介绍如何使用socket API编 写应用程序),应用程序对原创 2015-09-04 13:54:32 · 5125 阅读 · 0 评论 -
Linux C语言程序设计(十五)——进程、线程与信号
1、进程1.1 基本概念每个进程在内核中都有一个进程控制块( PCB)来维护进程相关的信息, Linux内核的进程控制块是task_struct结构体。进程ID:统中每个进程有唯一的id,在C语言中用pid_t类型表示,其实就是一个非负整数。进程状态:有运行、挂起、停止、僵尸等状态。当前工作目录1.2 forkfork的作用是根据一个现有的进程复制出一个新进程,原创 2015-09-03 17:32:46 · 1825 阅读 · 0 评论 -
Linux C语言程序设计(十)——makefile
1、Makefile的规则如果一条规则的目标属于以下情况之一,就称为需要更新:目标没有生成。某个条件需要更新。某个条件的修改时间比目标晚。在一条规则被执行之前,规则的条件可能处于以下三种状态之一:需要更新。能够找到以该条件为目标的规则,并且该规则中目标需要更新。不需要更新。能够找到以该条件为目标的规则,但是该规则中目标不需要更新;或者不能找到以该条件为目标的规则,并且该条件已原创 2015-08-04 19:29:40 · 668 阅读 · 0 评论 -
Linux C语言程序设计(十三)——Linux上的系统与文件命令
1、系统命令在Linux系统的shell命令中,$符号表示当前用户是普通用户, #符号表示当前用户是超级管理员用户,一般为root这里只说明简单的系统命令,退出命令,可以使用如下:$ exit或者$ logout回车之后就会退出当前用户状态。2、文件和目录2.1 ls命令ls命令是最常用的操作,它表示罗列当前目录下的所有文件和子目录。它的格式为ls原创 2015-08-15 19:15:59 · 708 阅读 · 1 评论 -
Linux C语言程序设计(十四)——文件系统与I/O
1、C标准I/O库函数先看看C标准I/O库函数是如何用系统调用实现的。fopen(3)调用open(2)打开指定的文件,返回一个文件描述符(就是一个int类型的编号),分配一个FILE结构体,其中包含该文件的描述符、 I/O缓冲区和当前读写位置等信息,返回这个FILE结构体的地址。fgetc(3)通过传入的FILE *参数找到该文件的描述符、 I/O缓冲区和当前读写位置,判断能原创 2015-08-30 22:27:07 · 1068 阅读 · 0 评论 -
Linux C语言程序设计(十二)——Shell编程的基础知识
1、创建脚本Shell脚本是将一系列的Linux命令放在一个文件中执行的实用程序。Shell脚本可以利用vi等文本编辑器来编写。Shell脚本的格式是固定的,如下:#!/bin/bash#注释命令... 第一行中的符号“#!”用来指定解释执行该脚本文件的Shell程序。如果脚本文件中缺少该行,在执行过程中就会报错。除了第一行只为,所有“#”开头的行都是注释。如果原创 2015-08-15 14:31:39 · 1027 阅读 · 0 评论 -
Linux C语言程序设计(十一)——Mac上编写与编译C文件
1、步骤介绍步骤:创建C文件、用Vim编写C程序、编译C程序文件、执行编译后生成的.out文件。1)$:touch Hello.c //创建一个Hello.c文件(本目录下)2)$:vim Hello.c //用vim编辑Hello.c文件 i //原创 2015-08-10 21:45:38 · 2018 阅读 · 0 评论 -
Linux C语言程序设计(六)——查找与排序
1、算法的概念 算法( Algorithm) 是将一组输入转化成一组输出的一系列计算步骤,其中每个步骤必须能在有限时间内完成。算法是用来解决一类计算问题的,注意是一类问题,而不是一个特定的问题。 这里我们可以回想之前提到的递归算法,递归就是算法,而具体求解的过程,不能称为算法,而是算法实现的过程。2、插入排序 插入排序算法类似于玩扑克原创 2015-07-14 19:19:25 · 633 阅读 · 0 评论 -
Linux C语言程序设计(八)——树的基本概念介绍
1 定义及相关术语1.1 树的定义树(Tree)是n(n≥0)个有限数据元素的集合。当n=0 时,称这棵树为空树。在一棵非树T 中:(1)有一个特殊的数据元素称为树的根结点,根结点没有前驱结点。(2)若n>1,除根结点之外的其余数据元素被分成m(m>0)个互不相交的集合T1,T2,…,Tm,其中每一个集合Ti(1≤i≤m)本身又是一棵树。树T1,T2,…,Tm 称为这个根结点的子树原创 2015-07-28 15:09:10 · 1134 阅读 · 0 评论 -
Linux C语言程序设计(九)——gdb调试
1、单步执行add_range函数从low加到high,在main函数中首先从1加到10,把结果保存下来,然后从1加到100,再把结果保存下来。#include int add_range(int low, int high){int i, sum;for (i = low; i <= high; i++)sum = sum + i;return sum;}int main原创 2015-07-28 15:12:09 · 497 阅读 · 0 评论 -
Linux C语言程序设计(二)——分支与循环
1、程序执行程序的执行是有一定的流程的,如果中间没有其它情况发生,程序会一直从头执行到结束。在C语言的定义中,我们有这样的三种基本流程:分支,顺序,循环。可以说这三种流程,是整个程序的架构基石,一切其它变形的流程都是建立在这三种流程执行,如递归等。2、if语句除了从前到后顺序执行之外,有时候我们需要检查一个条件,然后根据检查的结果执行不同的后续代码,在C语言中可以用分支语句原创 2015-07-06 19:24:00 · 764 阅读 · 0 评论 -
Linux C语言程序设计(一)——常量、变量和表达式
1、Hello World好像每一次都要用Hello World开始一门语言的学习,好吧,给出一个例子,如下:#includeint main(){ printf("this is Hello World!");}2、常量常量( Constant) 是程序中最基本的元素,有字符常量( Character Constant) 、数字常量和枚举常量。枚举常量以后再介绍,现原创 2015-07-06 14:45:32 · 2126 阅读 · 0 评论 -
Linux C语言程序设计(五)——数组基本概念与解析
1、数组基本概念 和结构体类似,数组( Array) 也是一种复合数据类型,它由一系列相同类型的元素( Element) 组成。数组元素的存储空间是相邻的,数组中的元素可以是基本数据类型,也可以是组合数据类型,但是只有一种。定义和访问一个数组,如下:#include int main(void){ int count[4] = { 3, 2, }, i; for原创 2015-07-12 16:19:28 · 570 阅读 · 0 评论 -
Linux C语言程序设计(四)——枚举与结构体
1、结构体 结构体不同于我们之前了解到的基本数据类型,结构体数据类型是一种复合数据类型,它可以包括一些基本的数据类型。 复合数据类型一方面可以从整体上当作一个数据使用,另一方面也可以分别访问它的各组成单元,复合数据类型的这种两面性提供了一种数据抽象。如果学习过java这样的面向对象的语言,会对结构体这样的抽象数据结构了解得比较深刻。比如,如果我们在二维坐标系上有原创 2015-07-09 20:37:29 · 1269 阅读 · 0 评论 -
Linux C语言程序设计(二十)——基于Linux C的简单web服务器
1、HTTP的GET请求 打开浏览器,输入服务器IP,例如 http://192.168.0.3 ,如果端口号不是80,例如是8000,则输入 http://192.168.0.3:8000 。这时浏览器向服务器发送的HTTP协议头如下:GET / HTTP/1.1Host: 192.168.0.3:8000User-Agent: Mozilla/5.0 (X11; U;原创 2015-09-19 15:39:35 · 4909 阅读 · 0 评论