Linux C高级编程
Linux C高级编程:文件操作,管道,信号,网络等。
a1314521531
这个作者很懒,什么都没留下…
展开
-
Linux下打印调试管理
#ifndef _DEBUG_MANAGE_H_#define _DEBUG_MANAGE_H_/* 信息的调试级别,数值起小级别越高 */#define APP_EMERG "" /* system is unusable */#define APP_ALERT "" /* action must be taken immediately */#define APP_原创 2016-08-31 09:45:05 · 733 阅读 · 0 评论 -
Linux下XPath对xml解析
#ifndef CONF_XML_H#define CONF_XML_H// xml文件在上一篇博客的注释部分有#include #include #include #include #include #include #include #include #define ROOT "root" //根节点#define SON_1 "can0" //儿子节点1#def原创 2016-09-01 09:19:55 · 2137 阅读 · 0 评论 -
Linux下获取xml调试信息等级
获取XML调试信息等级#ifndef _LOG_H_#define _LOG_H_#include #include #include #include #include #include #include #include #define CONF_FILE_NAME "/opt/can_book.xml"#define DEBUG_SON "de原创 2016-08-30 10:41:21 · 804 阅读 · 0 评论 -
Linux下libxml2编程基础
libxml2编程基础一、libxml2的简介 xml是一个实现读、创建、以及操作xml数据功能的C语言库。并且支持XPATH查询,以及部分的支持XSLT转换等的功能。 libxml2的下载地址为ftp://xmlsoft.org/libxml2/,完全版的库是开源的,并且带有例子的程序和说明文档。有rpm包格式,也有tar包的形式,可以下载下来自己编译安装。原创 2016-08-29 09:08:45 · 1001 阅读 · 0 评论 -
Linux C高级编程——网络编程之包裹函数
Linux网络编程(六)——包裹函数系统调用不能保证每次都成功,必须进行出错处理。包裹函数就是把一般函数加了出错处理。包裹函数首字母大写。/************************************************************************* > File Name: wrap.h > Author: libang > M原创 2016-04-07 08:47:37 · 1943 阅读 · 0 评论 -
Linux C高级编程——网络编程之API(5)
Linux C网络编程(3) 宗旨:技术的学习是有限的,分享的精神的无限的。 一、基本socket函数 Linux系统是通过提供套接字(socket)来进行网络编程的。网络的socket数据传输是一种特殊的I/O,socket也是一种文件描述符。socket也有一个类似于打开文件的函数:socket(),调用socket(),该函数返回一个原创 2016-04-06 08:55:09 · 2312 阅读 · 0 评论 -
Linux C高级编程——网络编程之UDP(4)
Linux网络编程——UDP宗旨:技术的学习是有限的,分享的精神是无限的。下面分析一帧基于UDP的TFTP协议帧。以太网首部0000: 00 05 5d 67 d0 b1 00 05 5d 61 58 a8 08 00IP首部0000: 45 000010: 00 53 93 25 00 00 80 11 25 ec c0 a8 00 37 c0 a8原创 2016-04-05 08:47:23 · 1265 阅读 · 0 评论 -
Linux C高级编程——网络编程之TCP(3)
Linux网络编程(三)——TCP宗旨:技术的学习是有限的,分享的精神是无限的。1、TCP段格式 和UDP协议一样也有源端口号和目的端口号,通讯的双方由IP地址和端口号标识。32位序号、32位确认序号、窗口大小。4位首部长度和IP协议头类似,表示TCP协议头的长度,以4字节为单位,因此TCP协议头最长可以是4x15=60字节,如果没有选项字段, TCP原创 2016-04-05 08:47:06 · 2260 阅读 · 0 评论 -
Linux C高级编程——网络编程之以太网(2)
Linux网络编程——以太网技术的学习是有限的,分享的精神是无限的。1、以太网(RFC 894)帧格式源地址和目的地址是指网卡的硬件地址(也叫MAC地址),长度是48位,是在网卡出厂时固化的。用ifconfig命令查看,“ 硬件地址 00:0c:29:cf:7e:1a ” 。协议字段有三种值,分别对应IP、 ARP、 RARP。帧末尾是CRC校验码。ARP和RA原创 2016-04-04 15:25:41 · 3891 阅读 · 0 评论 -
Linux C高级编程——网络编程基础(1)
Linux高级编程——BSD socket的网络编程宗旨:技术的学习是有限的,分享的精神的无限的。一网络通信基础 TCP/IP协议簇基础:之所以称TCP/IP是一个协议簇,是因为TCP/IP包含TCP 、IP、UDP、ICMP等多种协议。下图是OSI模型与TCP/IP模型的对比,TCP/IP将网络划分为4层模型:应用层、传输层、网络层和网络接口层(有些原创 2016-04-04 12:24:44 · 4472 阅读 · 0 评论 -
LinuxC高级编程——线程间同步
LinuxC高级编程——线程间同步宗旨:技术的学习是有限的,分享的精神的无限的。1、 互斥锁mutex 多个线程同时访问共享数据时可能会冲突。对于多线程的程序,访问冲突的问题是很普遍的,解决的办法是引入互斥锁(Mutex, Mutual Exclusive Lock),获得锁的线程可以完成“读-修改-写”的操作,然后释放锁给其它线程,没有获得 锁的线程原创 2016-04-03 22:32:26 · 1090 阅读 · 0 评论 -
LinuxC高级编程——线程
LinuxC高级编程——线程宗旨:技术的学习是有限的,分享的精神的无限的。一、线程基础 main函数和信号处理函数是同一个进程地址空间中的多个控制流程,多线程也是如 此,但是比信号处理函数更加灵活,信号处理函数的控制流程只是在信号递达时产生,在处理完信 号之后就结束,而多线程的控制流程可以长期并存,操作系统会在各线程之间调度和切换,就像在 多个进程之间原创 2016-04-03 17:00:11 · 1135 阅读 · 0 评论 -
进程间通信——信号
进程间通信——信号宗旨:技术的学习是有限的,分享的精神的无限的。一、信号和中断1、信号基本概念(1)发送信号:产生信号,有多种发送信号的方式【一个进程到另一个进程,内核向用户,进程向自己】(2)安装信号:设置信号到来时不再执行默认操作,而是执行自定义的代码。(3)递送信号:一个信号被操作系统发送到目标进程引起某段处理程序的执行。(4)捕获信号:被递送原创 2016-04-02 10:41:01 · 1836 阅读 · 0 评论 -
Shell脚本
Shell脚本宗旨:技术的学习是有限的,分享的精神的无限的。一、shell简介Shell的作用是解释执行用户的命令,用户输入一条命令, Shell就解释执行一条,这种方式称为交 互式( Interactive),Shell还有一种执行命令的方式称为批处理( Batch),用户事先写一 个Shell脚本( Script) ,其中有很多条命令,让Shell一次把这些命令原创 2016-04-02 09:03:01 · 1297 阅读 · 0 评论 -
Linux C实现简单的shell
Linux C下实现简单的Shell宗旨:技术的学习是有限的,分享的精神的无限的。【需求描述】用各种C函数实现一个简单的交互式Shell:1、给出提示符,让用户输入一行命令,识别程序名和参数并调用适当的exec函数执行程序,待执行完成后再次给出提示符。2、识别和处理以下符号:简单的标准输入输出重定向( 和>),先dup2然后exec。管道(|): She原创 2016-04-02 09:00:23 · 5786 阅读 · 0 评论 -
who|sort实现
who|sort实现宗旨:技术的学习是有限的,分享的精神的无限的。 创建无名管道,执行who命令的进程将输出重定向到管道的写端;执行sort命令的进程将输入重定向到管道的读端。即who的输出连接到sort的输入。#include #include #include #include #include #include #define PI原创 2016-04-02 08:57:12 · 1520 阅读 · 0 评论 -
进程间的通信——无名管道
进程间的通信——无名管道宗旨:技术的学习是有限的,分享的精神的无限的。一、进程间的通信(1)同主机进程间数据交互机制:无名管道(PIPE),有名管道(FIFO)、消息队列和共享内存。无名管道多用于亲缘关系进程间通信,无名管道可用于任意同主机进程间通信,但管道是单向的,会出现同时读写问题。消息队列可以实现同主机上任意多进程间通信,但存放的数据量很有限,应用于少量的数据原创 2016-04-02 08:56:32 · 1166 阅读 · 0 评论 -
Linux C高级编程——时间编程
Linux高级编程——时间编程宗旨:技术的学习是有限的,分享的精神的无限的。1 时间类型(1) 世界标准世界(格林威治时间)(2) 日历时间(1970年1月1日0时)——到此时经历的秒数 2 时间获取#includetime_ttime(time_t *tloc)——获取日历时间/*typedef longtime_t*/ 3 时间转原创 2016-04-01 14:21:18 · 913 阅读 · 0 评论 -
LinuxC高级编程——进程
LinuxC高级编程——进程宗旨:技术的学习是有限的,分享的精神的无限的。 每个进程在内核中都有一个进程控制块( PCB)来维护进程相关的信息, Linux内核的 进程控制块是task_struct结构体。PCB包含的信息:(1)进程id。系统中每个进程有唯一的id,在C语言中用pid_t类型表示,其实就是一个非负整 数。(2)进程的状态,有运行、原创 2016-04-01 09:01:19 · 1203 阅读 · 0 评论 -
Linux C语言实现ls -l
使用系统调用使用Linux下ls -l命令。最后的Makefile是通用的Makefile,可以直接使用。原创 2016-03-31 09:15:42 · 7260 阅读 · 0 评论 -
Linux文件系统及属性
Linux文件系统及属性宗旨:技术的学习是有限的,分享的精神的无限的。一、Linux系统下文件类型及属性1、inode结构/*索引节点对象由inode结构体表示,定义文件在linux/fs.h中*/struct inode{ struct hlist_node i_hash; /* 哈希表 */ struct l原创 2016-03-30 08:44:21 · 932 阅读 · 0 评论 -
ext2文件系统
ext2文件系统宗旨:技术的学习是有限的,分享的精神的无限的。一、总体存储布局 一个磁盘可以划分成多个分区,每个分区必须先用格式化工具(例如某种mkfs命令)格 式化成某种格式的文件系统,然后才能存储文件,格式化的过程会在磁盘上写一些管理存储布局的 信息。 文件系统中存储的最小单位是块(Block),一个块究竟多大是在格式化时原创 2016-03-30 08:43:15 · 1347 阅读 · 0 评论 -
文件流、目录流、文件描述符总结
文件流、目录流、文件描述符总结宗旨:技术的学习是有限的,分享的精神的无限的。 内核为使当前进程与进程打开的文件建立联系,在进程PCB(一个结构体task_struct)中使用一个成员来指向关于打开文件列表的结构体struct file_struct,而该结构体中的struct file *fd_array[]是一个指针数组,指向每个打开的文件信息。内核将这原创 2016-03-29 15:22:07 · 2682 阅读 · 0 评论 -
Linux C高级编程——目录操作
Linux C目录操作宗旨:技术的学习是有限的,分享的精神是无限的。 Linux思想“一切皆文件”,目录也是文件,只是存储的内容有别于普通文件。目录文件中存储的该目录下所有的文件及子目录文件的信息,inode节点。一、打开/关闭目录文件1、 opendir——打开目录(1)函数原型#include <dirent.h>...原创 2016-03-29 08:49:16 · 1421 阅读 · 0 评论 -
fprintf/fscanf函数分析
fprintf/fscanf函数分析宗旨:技术的学习是有限的,分享的精神的无限的。fprintf/fscanf函数与printf/scanf区别:printf/scanf专门针对标准输入输出流,fprintf/fscanf函数可用于任意流,包括输入输出流。1、fprintf——将输出按指定格式放置在指定的输出流上。(1)函数原型int fprintf(F原创 2016-03-29 08:48:31 · 861 阅读 · 0 评论 -
Linux C高级编程——文件操作之库函数
Linux c高级编程——文件操作之库函数宗旨:技术的学习是有限的,分享的精神的无限的——为什么要设计标准I/O库?直接使用API进行文件访问时,需要考虑许多细节问题例如:read、write时,缓冲区的大小该如何确定,才能使效率最优标准I/O库封装了诸多细节问题,包括缓冲区分配 ——标准I/O库缓冲标准I/O库提供缓冲的目的:尽可能减少使用re原创 2016-03-28 14:05:27 · 1620 阅读 · 0 评论 -
Linux C高级编程——文件操作之系统调用
Linux C高级编程文件操作之系统调用宗旨:技术的学习是有限的,分享的精神的无限的! 库函数是一些完成特定功能的函数,一般由某个标准组织制作发布,并形成一定的标准。使用库函数编写的函数一般可以应用于不同的平台而不需要做任何修改,具有很好的可移植性。 系统调用函数与操作系统直接相关,不同的操作系统所使用的系统调用可能不太一样,因此,原创 2016-03-28 09:09:46 · 4129 阅读 · 0 评论 -
main函数
main函数宗旨:技术的学习是有限的,分享的精神的无限的。Linux下运行的程序多数是带参数的,例如ls –l等。一般来说,所有程序代码都是从main函数开始执行的。main函数(1)函数原型int main(int argc, char*argv[]); //main可以带参数并在程序中直接使用。(2)函数参数argc:命令行参数的个数(包含命令本原创 2016-03-28 09:07:18 · 630 阅读 · 0 评论 -
Linux C目标文件
LinuxC目标文件宗旨:技术的学习是有限的,分享的精神的无限的。一、目标文件格式(ELF格式)编译器编译源代码后生成的文件叫做目标文件。目标文件是已经编译后的可执行文件,只是还没有经过链接的过程。PC平台流行的可执行文件格式:windows下的PE和Linux下的ELF。动态链接库和静态链接库也是按照可执行文件存储的。1、ELF文件归于4类:原创 2016-03-27 15:12:41 · 1643 阅读 · 4 评论 -
内存管理函数
内存管理函数一、 动态申请内存1、 malloc/free——动态分配内存和释放内存(1)函数原型void *malloc(size_tsize);void free(void *str);(2)函数参数 size:要分配的空间大小(3)返回值 返回一个指向分配的连续存储域首地址的指针。失败返回NULL。原创 2016-03-25 12:01:02 · 747 阅读 · 0 评论 -
Linux开发初步
Linux开发初步宗旨:技术的学习是有限的,分享的精神的无限的。一、库函数与系统调用1、系统调用函数和库函数库函数是一些完成特定功能的函数,一般由某个标准组织制作发布,并形成一定的标准。使用库函数编写的函数一般可以应用于不同的平台而不需要做任何修改,具有很好的可移植性。系统调用函数与操作系统直接相关,不同的操作系统所使用的系统调用可能不太一样,因此,如果两个原创 2016-03-25 11:49:26 · 602 阅读 · 0 评论 -
嵌入式软件书籍
嵌入式书籍推荐宗旨:技术的学习是有限的,分享的精神的无限的。Linux基础 1、《Linux与Unix Shell 编程指南》 C语言基础 1、《C Primer Plus,5th Edition》【美】Stephen Prata着 2、《The C Programming Language, 2nd Edition》【美】Bria原创 2016-03-19 08:58:04 · 1491 阅读 · 0 评论 -
嵌入式高手之路
第一部分:LINUX平台搭建与环境熟悉 了解Linux系统;区分各种版本的Linux系统,以便于拓展 Linux视野。1、Linux 简介;2、Linux 系统的主要特点;3、Linux 的组成;4、主要的 Linux 版本;5、嵌入式 Linux简介与发展第二部分虚拟机安装和原创 2016-03-19 08:51:39 · 1960 阅读 · 0 评论