导航:首页 > 编程系统 > linuxc系统编程有那些要学的

linuxc系统编程有那些要学的

发布时间:2025-01-09 20:47:52

1. 嵌入式linux上的C语言编程实践的目录

第一部分 基础知识
第1章 Linux环境下C语言的开发 2
1.1 Linux下的C语言开发环境 2
1.2 在Linux中使用C语言开发 3
1.2.1 开发流程和开发工具 3
1.2.2 Linux中程序的运行原理 4
第2章 嵌入式环境中的C语言开发 7
2.1 嵌入式C语言的开发环境 7
2.2 嵌入式开发中C语言编程要点 9
第二部分 Linux环境中
C语言的开发环境和工具
第3章 Linux的文本编辑工具VI 12
3.1 VI编辑器概述 12
3.1.1 VI简介 12
3.1.2 VI的工作模式和使用
3.1.2 之前的准备 12
3.1.3 进入和退出VI 13
3.2 VI的增强版VIM 16
3.3 VI编辑器的基本使用方法 17
3.3.1 在屏幕上移动光标 17
3.3.2 插入文本 20
3.3.3 删除文本 22
3.3.4 修改文本内容 25
3.3.5 替换文本内容 27
3.3.6 合并文本内容 30
3.3.7 移动文本内容 30
3.4 VI编辑器的命令和高级操作 32
3.4.1 VI常用命令的列表 32
3.4.2 VI的一些高级的操作和
3.1.2 使用技巧 35
第4章 GCC程序开发工具 39
4.1 GNU工具综述 39
4.2 GCC的编译和连接 43
4.2.1 工程示例 43
4.2.2 编译、汇编和连接 46
4.2.3 动态库 48
4.3 GCC的二进制工具 49
4.3.1 ar(归档工具) 49
4.3.2 readelf(读取ELF格式
3.1.2 文件信息) 51
4.3.3 strings(查看字符串) 54
4.3.4 nm(显示符号信息) 55
4.3.5 strip(删除符号) 57
4.3.6 objmp(显示目标
3.1.2 文件信息) 58
4.3.7 obj(复制目标文件) 63
第5章 make工程管理工具 67
5.1 make和Makefile 67
5.1.1 make机制概述 67
5.1.2 make和Makefile的使用 68
5.2 Makefile使用示例 69
5.2.1 简单的Makefile 69
5.2.2 Makefile中的依赖关系 71
5.2.3 Makefile中使用隐含规则
3.1.2 来编译程序 73
5.2.4 Makefile中指定依赖关系的
3.1.2 编译 76
5.3 自动生成Makefile 78
5.3.1 自动生成Makefile的意义和
3.1.2 相关工具 78
5.3.2 自动生成Makefile的流程 79
第6章 GDB调试工具 85
6.1 GDB简介 85
6.2 使用GDB调试程序 86
6.2.1 基本操作 88
6.2.2 查看命令 90
6.2.3 高级命令 92
6.2.4 attach命令的使用 94
6.3 远程GDB调试 95
6.3.1 本地GDB调试和远程GDB
3.1.2 调试的比较 95
6.3.2 远程GDB调试流程 97
6.3.3 远程GDB调试示例 98
第三部分 库函数
第7章 C语言标准库函数 106
7.1 ISO的C语言标准库函数
7.1 分类 106
7.2 标准格式化输入/输出类函数 107
7.2.1 scanf函数:格式化输入
3.1.2 字符串 107
7.2.2 printf函数:格式化输出
3.1.2 字符串 109
7.2.3 putchar函数:输出字符到
3.1.2 标准输出 111
7.2.4 getchar函数:从标准输入
3.1.2 获取字符 111
7.2.5 putc函数:向文件输出字符 112
7.2.6 getc函数:从文件输入字符 112
7.2.7 gets函数:获得字符串 112
7.2.8 puts函数:输出指定字符串 113
7.2.9 ungetc函数:把字符
3.1.2 写回流中 113
7.3 字符处理类函数 114
7.4 字符串处理及转换函数 116
7.4.1 sprintf函数:格式化输出
3.1.2 字符串到一个缓冲区 116
7.4.2 strcat和strncat函数:
3.1.2 字符串连接 119
7.4.3 strcpy和strncpy函数:
3.1.2 字符串复制 120
7.4.4 strcmp和strncmp函数:
3.1.2 字符串比较 121
7.4.5 strlen函数:获取字符串
3.1.2 长度 122
7.4.6 strchr和strrchr函数:字符/
3.1.2 字符串定位 122
7.4.7 strstr函数:字符串查找 123
7.4.8 strrev函数:字符串逆序 124
7.4.9 strupr和strlwr函数:字母
3.1.2 形式转换 125
7.4.10 strp和strnp函数:
3.1.2 字符串复制 125
7.4.11 memset函数:内存设置 126
7.4.12 memmove函数:内存移动 126
7.4.13 memcmp函数:内存比较 127
7.4.14 memcpy函数:内存复制 128
7.5 数学计算类函数 128
7.6 数据结构和算法类函数 133
7.6.1 bsearch函数:二元搜索 133
7.6.2 lfind函数:线性搜索 134
7.6.3 lsearch函数:线性搜索 135
7.6.4 qsort函数:利用快速排序法
3.1.2 排列数组 136
7.6.5 rand函数:产生随机数 136
7.6.6 srand函数:设置随机
3.1.2 数种子 137
7.7 文件I/O操作类相关函数 137
7.7.1 fopen函数:打开文件 138
7.7.2 fclose函数:关闭文件 139
7.7.3 fgetc函数:从文件中读取
3.1.2 一个字符 139
7.7.4 fputc函数:将一指定字符
3.1.2 写入文件流中 139
7.7.5 fgets函数:从文件中读取
3.1.2 一字符串 140
7.7.6 fputs函数:将一指定的
3.1.2 字符串写入文件内 140
7.7.7 rewind函数:重设文件流的
3.1.2 读写位置为文件开头 141
7.7.8 ftell函数:取得文件流的
3.1.2 读取位置 141
7.7.9 fseek函数:移动文件流的
3.1.2 读写位置 141
7.7.10 fwrite函数:将数据写至
7.7.10 文件流 142
7.7.11 fread函数:从文件流读取
7.7.10 数据 142
7.7.12 remove函数:删除文件 143
7.7.13 rename函数:更改文件
7.7.10 名称或位置 143
7.7.14 freopen函数:重新打开
7.7.10 文件 144
7.7.15 fflush函数:同步缓冲区 144
7.7.16 fgetpos函数:获得文件
7.7.10 位置 145
7.7.17 fsetpos函数:设置文件
7.7.10 位置 145
7.7.18 mktemp函数:建立临时
7.7.10 文件 146
7.7.19 tmpfile函数:临时文件 146
7.7.20 tmpnam:得到临时文件名 147
7.8 日期时间类函数 147
7.8.1 clock函数:获得CPU时间 148
7.8.2 time函数:获得当前日历
7.8.2 时间 148
7.8.3 difftime函数:获得时间
7.8.2 差值 148
7.8.4 gmtime函数:将日历时间
7.8.2 转换成UTC时间 149
7.8.5 mktime函数:将UTC时间
7.8.2 转换成日历时间 149
7.8.6 asctime函数:将UTC时间
7.8.2 转换成字符串 149
7.8.7 ctime函数:将日历时间转换
7.8.2 成当地时间的字符串 150
7.8.8 localtime函数:将日历时间
7.8.2 转换成本地时间 150
7.8.9 strftime函数:转换日期和
7.8.2 时间格式 151
7.9 国际化和本地化函数 152
7.9.1 setlocale函数:本地化控制
7.8.2 函数 153
7.9.2 localeconv函数:本地化
7.8.2 转换 154
7.10 错误处理类函数 155
7.10.1 clearerr函数:清除流中的
7.10.1 结束指示符和错误指示符 155
7.10.2 feof函数:指示文件结束 155
7.10.3 ferror函数:指示文件出错 156
7.10.4 perror函数:输出出错信息 156
7.10.5 errno函数:错误编号记录 156
7.11 其他一些工具函数 157
7.11.1 assert函数:程序诊断 157
7.11.2 长跳转函数 157
7.11.3 可变长的参数控制函数 160
7.11.4 获取结构体成员函数
7.10.1 (宏) 161
7.12 一些标准库中有用的宏 161
第8章 Linux中C语言的扩展库
函数 163
8.1 文件I/O操作函数 163
8.1.1 open函数:打开文件 163
8.1.2 close函数:关闭文件 164
8.1.3 read函数:读文件 165
8.1.4 write函数:写文件 165
8.1.5 lseek函数:文件定位 167
8.1.6 ioctl函数:文件控制 167
8.1.7 flock函数:锁定文件 167
8.1.8 mmap函数和munmap函数:
8.1.8 内存映射 168
8.1.9 create函数:创建新文件 170
8.1.10 p函数和p2函数:
8.1.10 复制文件描述符 171
8.1.11 fcntl函数:改变已打开的
8.1.10 文件的属性 171
8.2 文件权限相关的操作函数 172
8.2.1 access函数:判断是否
8.2.1 具有存取文件的权限 172
8.2.2 chown函数和fchown函数:
8.2.1 改变文件的所有者 173
8.2.3 chmod函数和fchmod函数:
8.2.1 改变权限 173
8.2.4 unlink函数:删除文件 173
8.2.5 utime函数和utimes函数:
8.2.1 改变文件时间 174
8.2.6 umask函数:设置建立
8.2.1 新文件时的权限掩码 175
8.2.7 link函数:建立文件连接 175
8.2.8 stat函数、fstat函数和lstat
8.2.1 函数:获取文件信息 175
8.3 用户组操作函数 176
8.3.1 getgid函数和setgid函数:
8.2.1 获得/设置组识别码 176
8.3.2 getegid函数和setegid函数:
8.2.1 获得/设置有效的组识别码 177
8.3.3 getuid函数和setuid函数:
8.2.1 获得/设置真实的用户识别码 177
8.3.4 geteuid函数和seteuid函数:
8.2.1 获得/设置有效的用户识别码 178
8.3.5 getgroups函数和setgroups
8.2.1 函数:获得/设置组代码 178
8.4 信号类函数 179
8.4.1 kill函数:传送信号给指定的
8.2.1 进程 181
8.4.2 raise函数:信号发送函数 181
8.4.3 alarm函数:设置超时函数 182
8.4.4 signal函数:信号安装函数 182
8.5 进程处理函数 183
8.5.1 getpid函数和getppid函数:
8.2.1 获得进程ID和父进程ID 183
8.5.2 fork函数:建立子进程 183
8.5.3 sleep函数和usleep函数:
8.2.1 让进程暂停执行一段时间 185
8.5.4 exec函数族:找到可执行
8.2.1 文件 185
8.5.5 _ exit函数和_Exit函数:
8.2.1 结束进程执行 188
第四部分 C语言高级编程
第9章 动态内存的堆与栈 190
9.1 程序内存区域的使用 190
9.1.1 静态内存与动态内存 190
9.1.2 C语言中的动态内存 191
9.2 C程序中栈空间的使用 196
9.2.1 参数使用栈空间 196
9.2.2 自动变量使用栈空间 199
9.2.3 程序中较大的栈 201
9.2.4 栈空间的特性 202
9.3 C程序中的堆空间使用 203
9.3.1 分配和释放堆内存的库函数 203
9.3.2 库函数使用 204
9.3.3 堆内存的特性 218
9.4 堆内存和栈内存使用的比较 222
9.4.1 利用返回值传递信息 222
9.4.2 利用参数传递信息 226
9.4.3 堆与栈内存管理的区别 231
第10章 函数指针的使用 232
10.1 函数指针的概念 232
10.1.1 C语言函数的本质 232
10.1.2 函数指针在C语言中的
10.1.2 意义 234
10.2 函数指针的使用 237
10.2.1 函数指针使用初步 237
10.2.2 函数指针的类型定义 240
10.2.3 函数指针作为结构体成员 242
10.2.4 函数指针作为函数的参数 243
10.2.5 函数指针作为函数的
10.2.5 返回值 244
10.2.6 函数指针数组 246
10.3 函数指针使用示例 248
第11章 回调函数的使用 252
11.1 回调函数的概念与作用 252
11.1.1 程序调用的方式 252
11.1.2 回调函数的作用 254
11.2 回调函数的语法 254
11.2.1 简单的回调函数 254
11.2.2 完全形式的回调函数 256
11.3 回调函数的使用 259
11.3.1 qsort中的回调函数 259
11.3.2 atexit和on_exit函数的
10.2.5 注册退出函数 263
第12章 C语言实现对象编程 268
12.1 C语言实现基于对象编程的
12.1 概念与作用 268
12.2 C语言基于对象编程实现
12.1 封装 269
12.2.1 简单的程序示例 269
12.2.2 C语言基于对象编程的
10.2.5 详解 272
12.2.3 C语言基于对象编程与
10.2.5 C++面向对象编程的对比 275
12.3 C语言基于对象编程实现
12.3 部分继承功能 278
12.3.1 利用数据结构的包含实现
10.2.5 继承功能 279
12.3.2 利用私有指针实现继承
10.2.5 功能 282
12.3.3 C语言实现继承的总结 287
12.4 C语言基于对象编程实现
12.4 部分多态功能 288
12.4.1 利用操作指针组的包含
10.2.5 实现多态功能 288
12.4.2 C语言实现多态功能的总结 292
12.5 对C语言实现基于对象
12.5 编程的思考 292
12.5.1 C语言基于对象编程的
10.2.5 特性 292
12.5.2 C语言基于对象编程中接口、
10.2.5 实现和调用者的关系 293
第五部分 在嵌入式
环境下的C语言编程
第13章 C语言程序的内存布局 295
13.1 C语言程序的存储区域 295
13.2 C语言程序的段 297
13.2.1 段的分类 297
13.2.2 程序中段的使用 298
13.3 可执行程序的连接 301
13.3.1 可执行程序的组成 301
13.3.2 各个目标文件的关系 303
13.3.3 连接错误示例 304
13.4 C语言程序的运行 309
13.4.1 RAM调试运行 311
13.4.2 固化程序的XIP运行 312
13.4.3 固化程序的加载运行 313
13.4.4 C语言程序的运行总结 315
第14章 嵌入式C语言常用语法 317
14.1 内存指针操作 317
14.1.1 内存操作的意义 317
14.1.2 使用指针操作内存 319
14.1.3 volatile的使用 324
14.1.4 嵌入式系统指针的实际
10.2.5 应用 325
14.2 位操作 327
14.2.1 位操作的意义 327
14.2.2 位操作的语法 328
14.3 大小端与对齐问题 330
14.3.1 大小端问题 331
14.3.2 内存对齐问题 335
14.3.3 结构体成员的对齐问题 338
14.4 程序的跳转 344
14.4.1 嵌入式系统程序跳转的
10.2.5 类型 344
14.4.2 C语言中实现程序的跳转 345
第15章 嵌入式C语言编程的技巧 348
15.1 程序的优化技巧 348
15.1.1 循环缓冲区 348
15.1.2 查表法 350
15.1.3 针对循环执行效率的
10.2.5 优化 353
15.2 关于小数运算 355
15.3 函数参数和返回值的传递 357
15.4 变量的初始化技巧 360
15.4.1 数组的初始化 360
15.4.2 结构体的初始化 362
15.4.3 变量的初始化总结 362
15.5 程序的调试和宏使用的技巧 363
15.5.1 打印文件、函数和程序行 363
15.5.2 #:字符串化操作符 364
15.5.3 ##:连接操作符 366
15.5.4 调试宏的第一种定义方式 367
15.5.5 调试宏的第二种定义方式 368
15.5.6 对调试语句进行分级审查 369
15.5.7 条件编译调试语句 370
15.5.8 使用do…while的宏定义 372
15.6 代码剖析 373
参考文献 378

2. 我刚开始学linux,正在C语言阶段,想深入学习,请问需要看哪些书,基本的都了解了,谢谢

学习linux,终端指令,shell,什么的一段时间就可以学的差不多了,当然shell你想深入的学习,也要花些时间,如果只是为了linux编程而学习linux,也没必要知道那喝多,够用就行,中间学好vi或者其他什么编辑器,这个在你后面学linux的时候会要用的多。然后估计你学linux会回到linux系统编程这个方面来,linux系统编程就是你说的深入学习了吧,这个还是很重要的,里面用到什么指针,二级指针,转移表,--指针很敏感也很好用,这个事c必须学好的东西,如果你想学linux编程我这里有本书《unix环境高级编程》,这本书很好,基本linux系统编程都有,很全面,内容也够深,
电子书,当然觉得电子书不好使,建议纸质的方便,
然后学习界面的画久是学习c++了,我们上课GUI 的时候是用Qt做--的。这些电子书都能找到-
《C.GUI.Qt4编程(第二版)》--

学习C++ 《c++ Primer中文版第四版》--

另外C 入门建议《c Primer plus[第五版]中文版》,,这个入门
提高可以看《c陷阱与缺陷》《c专家编程》,,
最后第三阶段基本你不要看什么书了,边编程手边放一本速查手册,遇到问题就查
积累就可以了

3. Linux C编程从初学到精通的目 录

第1部分 基础篇
第1章 Linux系统概述 1
1.1 什么是Linux 2
1.2 Linux系统特点及主要功能 2
1.2.1 Linux系统特点 3
1.2.2 Linux系统的主要功能 3
1.3 Linux的内核版本和发行版本 5
1.4 系统的安装 6
1.4.1 系统安装前的准备工作 6
1.4.2 从光盘安装Linux 6
1.4.3 从硬盘安装Linux 22
1.4.4 在虚拟机下安装Linux 22
1.5 Shell的使用 27
1.5.1 Shell简介 27
1.5.2 常见Shell的种类 28
1.5.3 Shell的简单使用 29
1.5.4 通配符 30
1.5.5 引号 31
1.5.6 注释符 33
1.6 Linux常用命令 33
1.6.1 与目录相关的命令 33
1.6.2 与文件相关的命令 34
1.6.3 与网络服务相关的命令 35
1.7 本章小结 35
实战演练 36
第2章 C语言编程基础 37
2.1 C语言的历史背景 38
2.2 C语言的特点 38
2.3 C语言的基本数据类型 39
2.3.1 整型 39
2.3.2 实型 40
2.3.3 字符型 41
2.4 运算符与表达式 43
2.4.1 算术运算符与算术表达式 43
2.4.2 赋值运算符与赋值表达式 44
2.4.3 逗号运算符与逗号表达式 45
2.5 C程序的3种基本结构 46
2.5.1 顺序结构 46
2.5.2 选择结构 47
2.5.3 循环结构 51
2.6 C语言中的数据输入与输出 54
2.6.1 字符输出函数putchar 54
2.6.2 字符输入函数getchar 54
2.6.3 格式输出函数printf 54
2.6.4 格式输入函数scanf 56
2.7 函数 57
2.7.1 函数的定义 57
2.7.2 函数的调用 58
2.7.3 变量的存储类别 59
2.8 数组 62
2.8.1 一维数组的定义和使用 63
2.8.2 二维数组的定义和使用 64
2.8.3 字符数组和字符串 65
2.8.4 常用字符串处理函数 66
2.9 指针 69
2.9.1 地址和指针 69
2.9.2 指针的定义和使用 70
2.9.3 数组与指针 71
2.9.4 字符串与指针 72
2.9.5 指向函数的指针 72
2.10 结构体和共用体 73
2.10.1 定义和引用结构体 73
2.10.2 结构体数组 74
2.10.3 指向结构体的指针 74
2.10.4 共用体 75
2.10.5 使用typedef定义类型 77
2.11 链表 77
2.11.1 链表概述 77
2.11.2 建立动态单向链表 78
2.11.3 单向链表的输出 80
2.11.4 对单向链表的删除操作 80
2.11.5 对单向链表的插入操作 81
2.11.6 循环链表 82
2.11.7 双向链表 82
2.12 位运算符和位运算 83
2.12.1 “按位与”运算符(&) 84
2.12.2 “按位或”运算符(|) 84
2.12.3 “取反”运算符(~) 84
2.12.4 “异或”运算符(^) 84
2.12.5 移位运算符(<<和>>) 85
2.12.6 位域 85
2.13 C语言预处理命令 86
2.13.1 宏定义 86
2.13.2 文件包含 87
2.13.3 条件编译 88
2.13.4 #error等其他常用预处理命令 89
2.14 本章小结 89
实战演练 89
第3章 vi与Emacs编辑器 91
3.1 vi的使用 92
3.1.1 启动与退出vi 92
3.1.2 vi的命令行模式 93
3.1.3 vi的插入模式 96
3.1.4 vi的底行模式 96
3.2 vi使用实例 97
3.3 Emacs的使用 100
3.3.1 启动与退出Emacs 101
3.3.2 Emacs下的基本操作 102
3.4 Emacs使用实例 107
3.5 本章小结 109
实战演练 109
第4章 gcc编译器与gdb调试器 110
4.1 gcc编译器简介 111
4.2 如何使用gcc 112
4.2.1 gcc编译初步 112
4.2.2 警告提示功能 114
4.2.3 优化gcc 116
4.2.4 连接库 119
4.2.5 同时编译多个源程序 120
4.2.6 管道 120
4.2.7 调试选项 121
4.3 gdb调试器 122
4.3.1 gdb简介 122
4.3.2 gdb常用命令 123
4.3.3 gdb调试初步 124
4.4 gdb的使用详解 126
4.4.1 调用gdb 127
4.4.2 使用断点 127
4.4.3 查看运行时数据 129
4.4.4 查看源程序 133
4.4.5 改变程序的执行 135
4.5 xxgdb调试器简介 138
4.6 本章小结 139
实战演练 139
第5章 make的使用和Makefile的编写 141
5.1 什么是make 142
5.1.1 make机制概述 142
5.1.2 make与Makefile的关系 144
5.2 Makefile的书写规则 147
5.2.1 Makefile的基本语法规则 148
5.2.2 在规则中使用通配符 149
5.2.3 伪目标 149
5.2.4 多目标 151
5.2.5 自动生成依赖性 151
5.3 Makefile的命令 152
5.4 变量 154
5.4.1 变量的基础 154
5.4.2 赋值变量 154
5.4.3 define关键字 156
5.4.4 override指示符 156
5.4.5 目标变量和模式变量 157
5.5 常用函数调用 158
5.5.1 字符串处理函数 158
5.5.2 文件名操作函数 162
5.5.3 循环函数 164
5.5.4 条件判断函数 165
5.5.5 其他常用函数 166
5.6 隐式规则 168
5.6.1 隐式规则举例 168
5.6.2 隐式规则中的变量 169
5.6.3 使用模式规则 170
5.7 本章小结 173
实战演练 173
第2部分 提高篇
第6章 文件I/O操作 174
6.1 Linux文件系统简介 175
6.1.1 Linux的文件系统结构 175
6.1.2 文件类型 176
6.1.3 文件访问权限 179
6.2 基于文件描述符的I/O操作 179
6.2.1 文件描述符 180
6.2.2 标准输入、标准输出和标准出错 180
6.2.3 文件重定向 181
6.2.4 文件的创建、打开与关闭 182
6.2.5 文件的定位 186
6.2.6 文件的读写 188
6.3 文件的属性操作 192
6.3.1 改变文件访问权限 192
6.3.2 改变文件所有者 193
6.3.3 重命名 193
6.3.4 修改文件长度 194
6.4 文件的其他操作 195
6.4.1 stat、fstat和lstat函数 195
6.4.2 p和p2函数 196
6.4.3 fcntl函数 197
6.4.4 sync和fsync函数 197
6.5 特殊文件的操作 198
6.5.1 目录文件的操作 198
6.5.2 链接文件的操作 201
6.5.3 管道文件的操作 204
6.5.4 设备文件 204
6.6 本章小结 205
实战演练 205
第7章 基于流的I/O操作 206
7.1 流与缓存 207
7.1.1 流和FILE对象 207
7.1.2 标准输入、标准输出和标准出错 207
7.1.3 缓存 207
7.1.4 对缓存的操作 210
7.2 流的打开与关闭 212
7.2.1 流的打开 212
7.2.2 流的关闭 214
7.2.3 流关闭前的工作 216
7.3 流的读写 216
7.3.1 基于字符的I/O 217
7.3.2 基于行的I/O 220
7.3.3 直接I/O 222
7.3.4 格式化I/O 224
7.4 本章小结 226
实战演练 227
第8章 进程控制 228
8.1 进程的基本概念 229
8.1.1 Linux进程简介 229
8.1.2 进程与作业 230
8.1.3 进程标识 230
8.2 进程控制的相关函数 232
8.2.1 fork和vfork函数 232
8.2.2 exec函数 237
8.2.3 exit和_exit函数 242
8.2.4 wait和waitpid函数 245
8.2.5 进程的一生 251
8.2.6 用户ID和组ID 251
8.2.7 system函数 253
8.3 多个进程间的关系 255
8.3.1 进程组 255
8.3.2 会话期 256
8.3.3 控制终端 257
8.4 本章小结 259
实战演练 259
第9章 信号 260
9.1 Linux信号简介 261
9.1.1 信号的基本概念 261
9.1.2 信号处理机制 265
9.2 信号操作的相关函数 267
9.2.1 信号的处理 267
9.2.2 信号的发送 274
9.2.3 信号的阻塞 282
9.2.4 计时器与信号 284
9.3 本章小结 286
实战演练 287
第10章 进程间通信 288
10.1 进程间通信简介 289
10.2 管道 290
10.2.1 管道的概念 290
10.2.2 管道的创建与关闭 291
10.2.3 管道的读写 292
10.3 命名管道 297
10.3.1 命名管道的概念 297
10.3.2 命名管道的创建 297
10.3.3 命名管道的读写 299
10.4 消息队列 303
10.4.1 消息队列的概念 303
10.4.2 消息队列的创建与打开 305
10.4.3 消息队列的读写 306
10.4.4 获得或设置消息队列属性 308
10.5 共享内存 312
10.5.1 共享内存的概念 312
10.5.2 共享内存的相关操作 313
10.6 信号量 318
10.6.1 信号量的概念 319
10.6.2 信号量集的相关操作 320
10.7 本章小结 325
实战演练 326
第11章 网络编程 327
11.1 网络编程的基础知识 328
11.1.1 计算机网络体系结构 328
11.1.2 传输控制协议TCP 333
11.1.3 用户数据报协议UDP 335
11.1.4 客户机/服务器模式 336
11.2 套接口编程基础 336
11.2.1 什么是套接口 337
11.2.2 端口号的概念 338
11.2.3 套接口的数据结构 338
11.2.4 基本函数 340
11.3 TCP套接口编程 343
11.3.1 TCP套接口通信工作流程 343
11.3.2 TCP套接口Client/Server程序实例 356
11.4 UDP套接口编程 360
11.4.1 UDP套接口通信工作流程 360
11.4.2 UDP套接口Client/Server程序实例 362
11.5 原始套接口编程 365
11.5.1 原始套接口的创建 365
11.5.2 原始套接口程序实例 365
11.6 本章小结 376
实战演练 376
第12章 Linux图形界面编程 377
12.1 Linux下的图形界面编程简介 378
12.1.1 Qt简介 378
12.1.2 GTK+简介 378
12.2 界面基本元件 381
12.2.1 一个简单的例子 381
12.2.2 窗口 383
12.2.3 标签 385
12.2.4 按钮 386
12.2.5 文本框 387
12.3 界面布局元件 389
12.3.1 表格 390
12.3.2 框 393
12.3.3 窗格 395
12.4 其他常用元件 398
12.4.1 进度条、微调按钮、组合框 398
12.4.2 单选按钮、复选按钮 402
12.4.3 下拉菜单 404
12.5 信号与回调函数 406
12.6 本章小结 409
实战演练 409
第3部分 实战篇
第13章 设计Linux下的计算器 411
13.1 软件功能分析 412
13.2 程序模块的划分 413
13.3 软件的具体实现 415
13.3.1 头文件 415
13.3.2 十六进制界面显示函数 416
13.3.3 十进制界面显示函数 417
13.3.4 八进制界面显示函数 418
13.3.5 二进制界面显示函数 419
13.3.6 进制间转换函数 420
13.3.7 信号处理模块 423
13.3.8 主函数 432
13.4 软件使用效果演示 438
13.5 本章小结 439
第14章 Linux平台下聊天软件的设计 440
14.1 软件功能概述 441
14.1.1 服务器端功能需求 441
14.1.2 客户端功能需求 442
14.1.3 错误处理需求 442
14.2 Glade集成开发工具简介 443
14.3 软件功能模块划分 444
14.3.1 服务器功能模块划分 444
14.3.2 客户端功能模块划分 445
14.3.3 消息标识的定义 445
14.3.4 消息结构体的设计 446
14.4 服务器程序的具体实现 447
14.4.1 服务器消息处理流程 447
14.4.2 服务器主要函数和变量 448
14.4.3 服务器消息处理模块的设计与实现 449
14.4.4 服务器数据存储的方法 450
14.4.5 用户注册流程 450
14.5 客户端程序的具体实现 451
14.5.1 客户端操作流程 451
14.5.2 客户端发送和接收消息流程 451
14.5.3 客户端主要函数和变量 452
14.5.4 客户端功能模块的设计与实现 453
14.6 聊天软件使用效果演示 455
14.7 本章小结 459
第15章 Linux远程管理工具的设计 460
15.1 软件功能概述 461
15.1.1 Webmin简介 461
15.1.2 软件总体设计 461
15.2 服务器端程序设计 463
15.2.1 服务器端工作流程 463
15.2.2 系统用户管理操作 464
15.2.3 系统用户组的管理操作 466
15.2.4 系统服务启动管理 468
15.2.5 DNS管理操作 469
15.2.6 Apache服务管理操作 471
15.2.7 FTP服务管理操作 474
15.3 客户端程序 475
15.3.1 连接界面 475
15.3.2 主界面 477
15.4 本章小结 479
第16章 Linux下简易防火墙软件的设计 480
16.1 Netfilter基础 481
16.1.1 什么是Netfilter 481
16.1.2 Netfilter的HOOK机制 482
16.1.3 HOOK的调用 485
16.1.4 HOOK的实现 486
16.1.5 IPTables简介 488
16.1.6 Netfilter可以实现的控制功能 489
16.2 软件设计概述 491
16.2.1 软件整体框架 491
16.2.2 管理端的设计 492
16.2.3 控制端的设计 493
16.3 用Netfilter设计控制端功能模块 495
16.3.1 ICMP管理控制模块 495
16.3.2 FTP管理控制模块 497
16.3.3 HTTP管理控制模块 499
16.3.4 模块的编译、加载与卸载 499
16.4 软件功能测试 501
16.5 本章小结 503
第17章 基于Linux的嵌入式家庭网关远程交互操作平台的设计 504
17.1 嵌入式技术简介 505
17.1.1 嵌入式系统的概念 505
17.1.2 嵌入式操作系统 506
17.1.3 嵌入式处理器 507
17.2 家庭网关的概念及其网络体系结构 509
17.2.1 智能家庭网络的概念 509
17.2.2 家庭网关的远程交互操作技术简介 510
17.2.3 嵌入式家庭网关的网络体系结构 510
17.3 嵌入式家庭网关的开发平台 511
17.3.1 S3C2410微处理器简介 511
17.3.2 交叉编译环境的建立 513
17.4 远程交互平台的设计 515
17.4.1 应用软件的开发模式 515
17.4.2 嵌入式Web服务器 516
17.4.3 通用网关接口CGI 519
17.5 Linux下软件模块的具体实现 520
17.5.1 登录验证模块 521
17.5.2 串口通信模块 521
17.5.3 中央空调控制模块 522
17.5.4 智能水表数据采集模块 528
17.5.5 试验结果 528
17.6 本章小结 529

4. 从事linux 下c开发,要学哪些知识推荐一下每个学习阶段的书籍,越详细越好。

想要把C开发学好,最有效的方法,是从用linux系统开始,安装linux或者linux虚拟机,边用边学。这里推荐一本极好的书《鸟哥liunx私房菜》,通俗易懂,真的很不错!
然后就是C开发,分为两大块:底层与应用!
C开发相对服务器管理较为深奥的,需要长时间的积累,还要了解硬件知识,操作系统的基本原理,Makefile语法等。建议从驱动程序入手,因为驱动程序是linux内核中模块化比较强的部分,相对易于理解,而且链接软件与硬件,能够从整体来学习。
这方面有很多经典书籍,其中入门比较好的有:
《嵌入式Linux应用开发完全手册》 韦东山著

内核与驱动编程类: 《linux设备驱动开发详解》 宋宝华著
《linux内核设计与实现》 Robert Love著 (学内核最好读物)
linux应用编程类: 《Unix环境高级编程》 (被誉为“圣经”)
《linux程序设计》
建议先看应用编程类,因为不涉及底层的内容,相对容易理解。等到这几本书消化的差不多了,就开始看经典之作《linux设备驱动程序》和《深入理解linux内核了》,这两本书非常权威,我也都看过,觉得讲的确实比其他书籍更细节,更准确。
这些基本可以说是最好的学习linux的书籍,只要循序渐进的看书,实践,一定会有效果的。

5. Linux C编程一站式学习III. Linux系统编程

Linux C编程深入研究涵盖了广泛的系统编程内容,从文件与I/O到高级网络编程,让我们逐一探索。

28. 文件与I/O是编程的基础,学习如何有效地读写文件,理解不同文件操作模式是至关重要的。

29. 文件系统是存储和管理数据的关键部分,29.1中介绍了ext2文件系统的原理,VFS(Virtual File System)则提供了抽象层,使得开发者可以方便地与各种文件系统交互。

30. 进程管理是程序运行的核心,30.1介绍进程的基本概念,30.2和30.3讲解环境变量和进程控制,而30.4和30.5则涉及进程间通信,包括实现简单的Shell作为实践练习。

31. Shell脚本是Linux命令行的强大工具,31.1阐述其历史,31.2至31.6分别介绍脚本执行、语法、启动脚本以及调试方法。

32. 正则表达式是处理文本的强大工具,33.1至33.4则深入探讨信号的产生、阻塞和捕捉,对于处理程序异常至关重要。

34. 34.1至34.3分别涉及终端、作业控制和守护进程,理解这些概念有助于优化程序的运行环境和生命周期。

35. 线程编程是提高程序性能的关键,35.1至35.4分别介绍了线程概念、控制、同步以及编程练习。

36. TCP/IP协议是网络通信的基础,包括协议栈、数据包封装、IP地址与路由等,36.5至36.7深入讲解TCP协议,为socket编程做准备。

37. socket编程是网络编程的核心,37.1至37.5分别介绍了预备知识、基于TCP和UDP的网络程序以及UNIX Domain Socket IPC,实战练习如实现Web服务器则是对所学知识的运用检验。

最后,A. 字符编码和B. 编译开发工具小结是编程旅程的必要补充,确保代码的兼容性和开发效率。

6. 想在LINUX下学习C语言,该如何开始

一、工具篇
“公欲善其事,必先利其器”。编程是一门实践性很强的工作,在你以后的学习或工作中,你将常常会与以下工具打交道, 下面列出学习C语言编程常常用到的软件和工具。
1、操作系统
在UNIX或Linux系统中学习C很方便,所以在开始您的学习旅程前请先选择一个UNIX或Linux操作系统,目前可供个人免费使用的UNIX或Linux系统有FreeBSD、RedHat Linux、SUSE Linux等,而且在安装包中还提供很多实用的工具,如:gcc, make等。
如果您一直使用Windows,身边又没有多余的机器安装UNIX,则可以使用VMware,通过VMware安装虚拟系统。
2、编译工具
目前绝大多数Unix或Lnux系统都提供CC或GCC编译器,最简单的cc命令格式如下:
cc -o hello hello.c
在unix shell环境中敲入上面的代码会将hello.c程序编译成可执行文件hello。
3、make工具
如 GNU make、System V make 和 Berkeley make 是用来组织应用程序编译过程的基本工具,但是每个 make 工具之间又有所不同。
大部分UNIX和Linux程序都是通过运行make来编译的。
make工具会读取一个包含指令的文件(这个文件的名字通常都是 makefile 或 Makefile,不过后文中我们统一称之为 “makefile”),并执行各种操作来编译程序。
4、调试工具
最简单的调试工具:为你的程序添加打印语句,在你对程序的运行机制有了一定的了解后,你可以实用一些工具帮助你进行调试,当然你得学习一下这些工具得使用,如:dbx,gdb等。
还有一些内存工具可以帮你查找内存泄漏或缓冲区溢出等一些问题,如:memwatch,yamd等。
5、其他工具

1)vi或vim
Unix下文本编辑器。主要靠一堆命令来编辑文本文件,学Unix编程最好熟悉并熟练使用vi编辑器。
当然在实际工作中,你可能需要一个集成编码环境或一个功能强大的图形化编辑工具。
提供一个中文的vim在线手册:http://vcd.gro.clinux.org/
2)Secure shell/putty
一个支持ssh协议得客户端工具,多数情况下用来连接linux系统。

二、书籍篇
“书是人类进步得阶梯”。学习一门新的知识,当然要选择几本适合自己得书籍,下面介绍一些我自己学习C语言使用过的书籍:

1.《C primer plus》
推荐理由:适合作为入门书和基本函数查询得参考资料。本书最新版为第五版,以ANSI C99为标准详细介绍了C语言。

2.《The C programming_Language》
推荐理由:C语言之父得作品权威性毋庸置疑。虽然书籍出版时间比较老,好像也没更新,不过仍不失为经典书籍,网上有这本书得英文电子版提供下载。

3.《C 专家编程》
推荐理由:本书可以帮助有一定经验的C程序员成为C编程方面的专家,最关键的是本书寓教于乐,让你充分享受编程的乐趣。

4.《C缺陷与陷阱》
推荐理由:书中所揭示的知识能帮助您绕过C语言自身得陷阱和缺陷,减少代码中许多常见的Bug。

5.《unix环境高级编程》
推荐理由:既然是UNIX环境下C编程,就不得不说说UNIX编程书籍。
Stevens先生的《unix环境高级编程》是我竭力推荐的,也是我的案头必备(如果对网络编程有兴趣的,可以学习一下Stevens先生的《UNIX网络编程》两卷,如果觉得还不过瘾,可以再看看《TCP/IP详解》三卷)。

6.《计算机编程艺术》
推荐理由:算法大师得呕心沥血之作。计划出版五卷书,目前好像已出版3卷。对算法有兴趣得可以研究一下。

三、过程篇
1.学习C语法
语法的学习对于一个具有编程底子的来说,就很轻松了;即使你以前没有学习过其他编程语言,我相信有2个星期,你也能轻松搞定。
需要注意的是,不要太纠缠于语言的细节,比如:运算符优先级与结合性的问题等。

2.学习C标准库
ANSI C库把函数分为不同的组,每个组都具有与之相关的头文件。C语言标准库相对于其他语言,比如C++,Java来说是非常短小精悍的,但首先应着重对以下库进行学习:
ctype.h:字符处理
math.h:数学库
stdio.h:标准I/O库
stdlib.h:通用工具库
string.h:字符串处理
time.h:时间和日期
如果想了解完成的ANSI C库,你可以购买相关的书籍,这些书籍一般会详细介绍每个函数的用户和一些注意点;当然你也可以登陆http://www.dinkumware.com/manual ... amp;page=index.html获取ANSI C库详细信息。

3.攻克C的难点

1)C语言声明:
C语言的声明确实让我觉得恐怖,比较晦涩难懂,而且声明的形式和使用的形式还类似。比如如下的声明恐怕就连很多熟悉C多年的程序员也不是一眼就能看出来的:
char * const * (*next)();
那么有没有一种好的记忆方法或规则来搞清楚呢,好像没有,如果有的话也不是这样折磨人了。不过可以看看《C专家编程》第三章的内容,或许你会有所收获。
也只能多学多练了,所谓熟能生巧嘛,希望这个问题不要在你的心灵上留下阴影。
2)数组与指针:
数组与指针的关系,在标准中并没有作很详细的规定,而且好多C入门的书籍在这个问题上并没有给出很详细的说明,所以会给人造成很多误解。
对于这个问题,你可以参考《C缺陷与陷阱》4.5节和《C专家编程》第4,9,10章,相信你这里面的内容搞透彻,以后就不会再被这个问题搞迷惑。
3)指针与内存:
如果你以后编写规模较大的程序,你可能发现这个问题可能会是你最大的烦恼,而且可能会是你消耗最多调试时间的事项。
4)C版本的问题:
你得特别小心该问题,最好不要在你的程序中混合使用不同版本C的特性,否则会给你带来很迷惑的问题。如果一定要用,你最好清楚自己在做什么。
还有一些其他C中的难点和容易错误的地方,可以学习前人的一些经验。以下是一个c FAQ的链接地址,相信在这篇文档中有你需要的大部分问题的解决方法。
http://c-faq-chn.sourceforge.net/
4. UNIX环境编程
学习了以上内容之后,我相信,你就可以进行unix环境编程了。不过你可能需要对操作系统理论有一点点的了解,这样学起来会比较轻松一些。
Unix环境编程,你应该着重IO和进程两大块内容。
《Unix环境高级编程》中对Unix环境编程有着非常详细且深入的论述,而且书中有大量实用性例子程序,不过可能得花上几个月得时间,好好啃一啃了。
在扎实掌握以上内容,不代表你得C语言学习支路已经完成,相反,才刚刚开始。以后你需要用学到得知识去解决大量不同实际问题,在不断得实践过程中,你会近一步加深对C的理解。有了以上基础之后,你会发现,在实践过程中需要的其他知识,你会非常快速的掌握。

阅读全文

与linuxc系统编程有那些要学的相关的资料

热点内容
微信文爱聊天截图图片 浏览:427
糖果小号密码查看工具 浏览:191
pm一般做什么编程 浏览:937
linux共享文件给mac 浏览:428
ps另存为时找不到文件 浏览:818
iphone6s朋友圈视频没声音 浏览:728
win10系统工具文件夹 浏览:862
微信扔出去的怎样找回来 浏览:744
编程怎么录视频 浏览:470
东方财富app解套率怎么计算 浏览:74
win10系统为excel文件在哪里 浏览:578
字幕文件哪个网站下载 浏览:745
app怎么推广推广 浏览:674
小鸟壁纸哪个文件夹删不掉 浏览:419
闺蜜圈app怎么样 浏览:931
新版天猫app如何查看详情 浏览:390
sql数据库同步 浏览:492
网络面板线错了怎么办 浏览:343
cs6画笔工具在哪 浏览:290
微信删了数据怎么恢复 浏览:162

友情链接