Linux C语言程序设计
¥
51.78
7.4折
¥
69.8
九五品
仅1件
作者张同光,田文强,荆春棋,田乔梅,陈明
出版社清华大学出版社
ISBN9787302638766
出版时间2023-08
版次1
装帧平装
开本16开
纸张胶版纸
定价69.8元
上书时间2024-07-15
商品详情
- 品相描述:九五品
- 商品描述
-
基本信息
书名:Linux C语言程序设计
定价:69.80元
作者:张同光,田文强,荆春棋,田乔梅,陈明
出版社:清华大学出版社
出版日期:2023-08-01
ISBN:9787302638766
字数:
页码:
版次:
装帧:平装
开本:16开
商品重量:
编辑推荐
本书作者多年来一直从事Linux教学和科研工作,使用C语言开发了多个Linux相关的横向纵向项目。本书全面介绍了Linux C语言程序设计的多个方面,包括C语言程序设计的基础知识,以及C标准库、Linux系统调用、socket、pthread、GTK、静态库和共享库的使用和编写,另外,还介绍了Linux内核编程。通过本书的学习,读者将成为一名全栈式Linux C语言开发人员。
内容提要
本书以“学完C语言之后知道能做什么”为编写目标,共12章: Linux C语言程序设计、C语言基础Ⅰ、C语言基础Ⅱ、编译与调试、链表、C标准库、Linux系统调用、Socket编程、Linux函数库和进程地址空间、Pthreads编程、GTK图形界面编程、Linux内核编程。其中,C语言基础Ⅰ、C语言基础Ⅱ、C标准库与Linux系统调用为本书基础、重要的4章,全面介绍了标准C的基本语法和Linux系统调用编程。其他章节告诉读者C语言具体能做什么。本书坚守“Talk is cheap, show me the code”信条,通过正确无误的示例代码向读者展示C语言的具体用法。本书内容注重实用,结构清晰,图文并茂,力求做到使读者感兴趣地学习Linux C语言编程。 本书可作为高等学校各专业的“C语言程序设计”课程教材,也可作为从事计算机相关工作的科技人员、计算机爱好者及各类自学人员的参考书。
目录
章Linux C语言程序设计/11.1C语言/11.1.1C语言简介/11.1.2C语言的发展历史/21.1.3C语言的特点/21.2Linux概述/31.3Linux C语言程序设计简介/41.3.1Linux应用编程、系统编程和内核编程/41.3.2Linux图形界面编程/41.4Linux C语言编程环境/51.4.1Ubuntu Linux虚拟机/51.4.2gedit、vim和nano/51.4.3C语言编译器及集成开发环境/61.4.4Hello World程序/61.5习题/7第2章C语言基础Ⅰ/92.1数据/92.1.1数据类型/92.1.2常量/112.1.3变量和标识符/132.1.4数据类型转换/142.1.5转义字符(转义序列)/152.2运算符/162.2.1运算符和表达式/162.2.2算术运算/182.2.3赋值运算/182.2.4关系运算/192.2.5逻辑运算符/192.2.6条件运算符/202.2.7逗号运算符/202.2.8sizeof运算符与typedef类型声明/212.2.9位运算/212.2.10复合赋值运算符/222.3结构化程序设计/232.3.1顺序结构/232.3.2分支结构/242.3.3循环结构/262.4输入/输出/292.4.1标准输出函数printf/302.4.2标准输入函数scanf/322.5数组/342.5.1一维数组/342.5.2二维数组/352.5.3一维字符数组/362.5.4一维字符数组的输入/输出/362.5.5字符串处理函数/372.5.6二维字符数组/392.6习题/40第3章C语言基础II/443.1函数/443.1.1C语言库函数/443.1.2函数定义和声明/443.1.3函数调用及参数传递/463.1.4函数的嵌套与递归/493.1.5回调函数/503.1.6return语句/503.1.7全局变量、局部变量和作用域/513.1.8变量的存储类别及生存期/523.1.9内部函数和外部函数/543.2预处理/543.2.1预处理的步骤/543.2.2宏定义和内联函数/553.2.3条件编译/573.2.4文件包含/573.3指针/583.3.1指针的基本运算/583.3.2指针与数组/613.3.3指针与const限定符/643.3.4指针与字符串/653.3.5指针函数与函数指针/653.3.6再讲回调函数/663.3.7可变参数/673.3.8二级指针与多级指针/683.3.9指针数组和数组指针/693.3.10动态内存管理/703.4结构体、共用体和枚举/713.4.1结构体/713.4.2位域/723.4.3共用体/733.4.4枚举/743.5零长数组、变长数组和动态数组/753.6编码风格与缩进工具indent/773.7习题/79第4章编译与调试/824.1gcc、make、Makefile、cmake和CMakeLists.txt/824.1.1gcc/824.1.2make和Makefile/844.1.3cmake和CMakeLists.txt/904.2完整的编译过程/904.3调试程序/924.3.1调试(Debug)和GDB/924.3.2测试用例/934.3.3GDB启动程序/934.3.4断点/944.3.5观察点/954.3.6捕捉点/964.3.7信号/964.3.8单步调试/974.3.9打印输出/974.3.10函数栈帧/994.3.11TUI窗口/1004.3.12函数跳转/1014.3.13段错误/1014.3.14coredump/1014.3.15调试正在运行的程序/1024.3.16调试多进程和多线程/1034.3.17gdb使用示例/1054.4习题/105第5章链表/1075.1单向链表/1075.1.1单链表结构与链表结点类型/1075.1.2创建单链表/1085.1.3插入结点/1095.1.4删除结点/1095.1.5读取结点/1105.1.6查找结点/1105.1.7打印单链表/1105.1.8逆转单链表/1115.1.9构建单向循环链表/1115.1.10销毁单链表/1125.1.11主函数及测试结果/1125.2双向链表/1135.2.1双链表结构与链表结点类型/1135.2.2创建双链表/1135.2.3插入结点/1155.2.4删除结点/1155.2.5读取结点/1165.2.6查找结点/1165.2.7打印双链表/1165.2.8逆转双链表/1175.2.9构建双向循环链表/1175.2.10销毁双向循环链表/1185.2.11主函数及测试结果/1185.3内核链表/1195.3.1list_head/1195.3.2offsetof、container_of和list_entry/1205.3.3链表初始化/1205.3.4插入结点/1215.3.5删除结点/1215.3.6替换结点/1225.3.7移动结点/1225.3.8判断函数/1235.3.9合并结点/1235.3.10遍历链表/1245.3.11用户空间使用内核链表/1245.4习题/125第6章C标准库/1276.1C语言标准和glibc/1276.2标准输入/输出函数库/1296.2.1fopen/fclose/1306.2.2stdin/stdout/stderr/1326.2.3errno与perror函数/1326.2.4以字节为单位的I/O函数/1336.2.5以字符串为单位的I/O函数/1356.2.6以记录为单位的I/O函数/1366.2.7格式化读写文件/1376.2.8操作读写位置的函数/1386.2.9FILE结构体及I/O缓冲区/1406.3标准工具函数库/1436.3.1动态内存分配与释放/1446.3.2整数算术/1456.3.3随机数/1466.3.4数值字符串转换/1476.3.5宽字符和多字节字符转换/1486.4字符串处理函数库/1526.4.1内存赋值/1526.4.2取字符串的长度/1536.4.3复制字符串/1536.4.4比较字符串/1546.4.5搜索字符串/1556.4.6连接字符串/1566.4.7分割字符串/1576.4.8本地函数/1586.5字符处理函数库/1606.6数学函数库/1616.7学生信息管理系统的设计与实现/1636.7.1系统设计要求/1636.7.2系统设计/1636.7.3函数设计/1646.7.4参考程序/1656.7.5运行结果/1686.8习题/168第7章Linux系统调用/1717.1C库函数和Linux系统调用/1717.2Linux中使用系统调用的三种方法/1737.2.1通过glibc封装的库函数/1737.2.2使用syscall直接调用/1737.2.3通过CPU指令调用/1737.3Linux系统调用编程: 进程管理/1747.4Linux系统调用编程: 进程间通信/1777.5Linux系统调用编程: exec函数族/1797.6Linux系统调用编程: 文件管理/1817.7习题/188第8章Socket编程/1908.1Socket基本概念/1908.1.1Socket是什么/1908.1.2主机字节序与网络字节序/1918.1.3Socket地址结构/1928.1.4地址转换函数/1948.1.5C/S架构/1958.2Socket相关函数/1968.2.1socket函数/1968.2.2bind函数/1968.2.3listen/connect函数/1968.2.4accept函数/1978.2.5网络I/O函数/1988.2.6close函数/2008.2.7getsockopt和setsockopt函数/2008.2.8select函数/2038.2.9poll函数/2038.2.10epoll函数/2048.3基于TCP的网络程序/2058.3.1简单C/S应用程序的设计/2068.3.2交互式C/S应用程序的设计/2088.3.3简单聊天室应用程序的设计(select)/2108.3.4聊天室应用程序的设计(select)/2148.3.5简单C/S应用程序的设计(epoll)/2198.4基于UDP的网络程序/2218.4.1简单C/S应用程序的设计/2218.4.2简单聊天室应用程序的设计/2238.5原始套接字编程/2258.6UNIX Domain Socket/2278.7习题/230第9章Linux函数库和进程地址空间/2329.1静态库和共享库/2329.2函数库的制作和使用/2339.2.1静态库的制作和使用/2349.2.2共享库的制作和使用/2369.3显式链接共享库/2399.4进程地址空间/2419.4.132位系统的进程地址空间/2419.4.264位系统的进程地址空间/2449.4.3查看进程地址空间/2459.4.4编程验证进程地址空间布局/2499.5动态链接过程/2509.5.1ELF文件格式/2519.5.2加载解释器/2529.5.3运行解释器/2539.6习题/2600章Pthreads编程/26110.1Pthreads概述/26110.1.1Linux进程和线程/26110.1.2Linux线程模型/26210.1.3Pthreads简介/26310.2Pthreads函数/26310.2.1创建线程/26310.2.2终止线程/26410.2.3线程的结合和分离/26510.2.4线程属性/26810.2.5自动清理线程资源/27310.2.6线程同步与互斥/27410.3Pthreads编程示例/28110.3.1读者写者/28110.3.2生产者消费者/28210.3.3哲学家就餐/28310.4习题/2851章GTK图形界面编程/28711.1GTK概述/28711.2GLib概述/28811.3信号和回调函数/29511.4GTK控件/29711.4.1非容器控件/29711.4.2容器控件/29711.5GTK图形界面编程/29811.5.1Hello World/29811.5.2GtkGrid/29911.5.3Custom Drawing/30111.5.4GtkBuilder创建界面/30411.5.5Cambalache/30611.6GTK图形界面聊天室/30811.6.1聊天室服务器端/30811.6.2聊天室客户端/31111.6.3测试/31611.7习题/3172章Linux内核编程/31912.1Linux内核编程概念/31912.2LKM编程: Hello World/32012.2.1LKM签名验证/32012.2.2Hello World模块的编写和运行/32212.2.3模块参数和模块导出符号/32412.3Linux驱动程序设计/32712.3.1Linux驱动程序简介/32712.3.2字符设备驱动程序/32812.3.3虚拟网卡驱动程序/33212.4习题/335附录AASCII码表/337附录B资源及学习网站/338参考文献/339
作者介绍
序言
— 没有更多了 —
以下为对购买帮助不大的评价