Linux C 学习笔记:从基础到进阶

需积分: 9 1 下载量 34 浏览量 更新于2024-07-25 收藏 693KB DOCX 举报
"这是一份Linux C语言学习笔记,包含了对C语言输入输出函数、EOF、链接库、华为面试相关问题、内存管理、信号处理、文件属性、网络编程、多线程以及各种通信机制的详细讲解。笔记整理自网络,适合初学者和进阶者参考学习。" 这篇学习笔记涵盖了Linux环境下C语言编程的多个关键知识点: 1. **输入输出函数**: - `getchar()`:用于从标准输入`stdin`流中读取单个字符,返回值为输入字符的ASCII码,错误时返回-1。 - `getch()`:类似`getchar()`,但不等待用户按下回车,直接读取输入。 2. **文件结束标识符EOF**:在C语言中,当尝试从已到达文件末尾的流中读取数据时,返回EOF表示文件结束。 3. **链接库**: - 静态链接库:编译时与程序合并,生成的可执行文件包含库的所有代码。 - 动态链接库:运行时加载,减少了程序大小,便于代码更新和共享。 4. **华为面试题**: - `extern`关键字:用于声明全局变量或函数在其他文件中的定义。 - 变量相关问题:可能涉及变量的作用域、生命周期、初始化等概念。 5. **内存管理**: - 动态内存分配:通过`malloc`、`calloc`、`realloc`、`free`等函数进行内存的申请和释放。 - 锁定内存:使用`mlock`等函数防止内存被交换到磁盘,提高系统安全性。 6. **信号处理**: - 信号是进程间通信的一种方式,包括信号的发送、接收和处理。 - `signal`和`sighand`函数用于设置信号处理器。 - `sigprocmask`、`sigsuspend`用于控制信号的阻塞和恢复。 7. **进程管理**: - 进程等待:`wait`和`waitpid`函数用于等待子进程结束。 - 退出进程:`exit`、`_exit`函数用于终止进程。 8. **网络编程**: - 通信机制和体系结构模式:介绍TCP/IP协议栈及其在编程中的应用。 - `socket`实例:展示了如何创建和使用套接字进行网络通信。 9. **多线程编程**: - 解决`undefined reference to 'pthread_create'`问题:可能是因为缺少线程库链接。 - 线程互斥实例:使用`pthread_mutex_t`进行线程同步。 10. **底层编程**: - 终端编程实例:处理终端输入输出和控制。 - 共享内存通信实例:利用`shmget`、`shmat`等函数实现进程间的共享内存通信。 - 消息队列实例:使用`msgget`、`msgsnd`、`msgrcv`进行消息队列通信。 11. **文件操作**: - 文件类型和属性:介绍Linux文件系统的不同文件类型及其属性。 - 文件操作:包括打开、读写、关闭等基本操作。 这份笔记全面而深入地讲解了Linux C编程的各个方面,对于学习和巩固Linux环境下的C语言编程技能非常有帮助。