项目简介
本项目聚焦于C语言编程,广泛涵盖从基础编译流程、库制作,到文件操作、进程管理、进程间通信、线程同步,乃至网络编程等多领域知识与实践。借助该项目,能够深入探究C语言在不同场景下的应用,掌握运用C语言开展系统编程和网络编程的基本技能。
项目的主要特性和功能
- 编译与库制作:详细解析gcc编译流程(预处理、编译、汇编、链接)及常用参数,阐述静态库和动态库的制作与使用,对比二者优缺点。
- 项目管理:运用makefile管理项目工程文件,通过不同版本示例展示变量、模式规则等特性及清理功能。
- 文件操作:涉及C语言和C++的文件操作,介绍C语言中文件描述符、文件指针和文件缓冲区概念,给出C++读取文件示例。
- 进程管理:讲解Linux下进程的并发、并行概念、状态,介绍fork、exec函数族、进程回收函数(wait/waitpid),解决僵尸进程和孤儿进程问题。
- 进程间通信:提供无名管道、命名管道、内存映射区(mmap)和信号等多种通信方式,介绍原理、读写行为和代码实现。
- 线程同步:介绍线程同步概念并给出简单示例。
- 网络编程:介绍TCP/IP协议各层协议,讲解OSI 7层模型,阐述socket通信编程服务端和客户端开发流程,包括三次握手和四次挥手原理。
- 版本控制:给出基本git操作命令用于代码版本管理。
安装使用步骤
编译与库制作
- 编译流程:一步生成可执行程序用
gcc test.c -o test
;分步编译按预处理、编译、汇编和链接顺序执行相应gcc命令。 - 静态库制作:先
gcc -c fun1.c fun2.c
编译成.o文件,再用ar rcs libtest1.a fun1.o fun2.o
打包成.a文件。使用时用gcc -o main1 main.c -I./ -L./ -ltest1
。 - 动态库制作:生成.o文件加
-fPIC
选项,如gcc -fpic -c fun1.c fun2.c
;生成共享库加-shared
选项,如gcc -shared fun1.o fun2.o -o libtest2.so
。使用时用gcc main.c -I./ -L./ -ltest2 -o main2
。
makefile使用
在项目根目录下,用 make
执行makefile文件;执行指定文件用 make -f mainmak
;清理生成文件用 make clean
。
网络编程
- 编译服务器和客户端代码:分别用
gcc 1 - servertest.c -o server
和gcc 2 - client.c -o client
编译。 - 运行服务器和客户端:先
./server
运行服务器,再./client
运行客户端。 - 测试通信功能:在客户端输入消息,观察服务器响应验证通信功能。
注意事项
- 使用动态库时,可能需设置环境变量
LD_LIBRARY_PATH
让系统找到共享库。 - 网络编程时,确保服务器和客户端在同一网络环境,按需调整IP地址和端口号。
- 实际部署时,可能需进行防火墙设置以允许连接。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】