file-type

嵌入式Linux学习笔记:C语言与系统调用

下载需积分: 17 | 1.06MB | 更新于2024-07-14 | 124 浏览量 | 1 下载量 举报 收藏
download 立即下载
"寒假嵌入式笔记记录了个人在学习嵌入式Linux系统中的关键知识点,包括C语言基础、进程与线程管理、网络编程以及内存管理等方面的内容。笔记特别强调了形参与实参的区别、内存泄漏问题的避免、字符串处理函数、结构体的内存对齐规则以及各种进程间通信机制的应用。" 详细内容如下: 1. C语言基础 - `System`函数用于执行Windows命令,例如`System("start 应用.exe")`可以启动指定的程序。 - 形参和实参的关系:形参在函数调用时分配内存,调用结束后被释放,因此在函数内部改变形参不会影响实参。 - 强制类型转换:不同数据类型间的运算需要使用强制类型转换,例如`(float)x/y`将整数除法转换为浮点数除法。 - `sizeof`运算符:计算数据类型或数组的大小,如`sizeof(arr)/sizeof(arr[0])`得到数组元素个数。 - 指针:`int(*p)[3]`定义了一个指向包含3个整数的数组的指针。 2. 内存管理 - 内存泄漏:程序不断申请内存但未及时释放,导致系统资源耗尽,可能导致电脑卡顿。避免内存泄漏的关键是确保正确释放不再使用的内存。 - `malloc`函数:动态分配内存,如`int *a = (int *)malloc(3 * sizeof(int))`分配3个整数大小的内存空间。 - `memset`函数:用于填充内存区域,将指定区域的值设为特定值。 3. 数据结构与算法 - 结构体:遵循内存对齐规则,成员的偏移量和结构体大小必须是成员大小的整数倍。 - 链表:由多个结构体通过指针相连,实现数据的动态链接。 4. 进程与线程 - `fork()`:创建一个子进程,使得父进程和子进程共享代码段,但拥有独立的数据段。 - `vfork()`:创建子进程,与`fork()`相似,但子进程使用父进程的地址空间,直到执行`exec`系列函数。 - `exec`系列函数:替换当前进程的执行映像,执行新的程序。 - `system`函数:以子进程的形式执行shell命令。 - `popen`函数:创建一个管道,并启动一个子进程,允许进程间通过管道通信。 - 管道(Pipes):半双工通信,适用于父子进程间通信。 - 有名管道(FIFO):以文件形式存在,可以被不相关进程读写,实现进程间通信。 - 消息队列:使用`msgget`创建,是一个消息链表,每个消息都是一个结构体,支持更复杂的通信模式。 5. 网络编程 - 未在文档中具体展开,但网络编程通常涉及套接字编程、TCP/IP协议栈、HTTP等概念,用于实现进程间的网络通信。 这个寒假嵌入式笔记涵盖了嵌入式开发中基础且重要的知识点,对于理解嵌入式Linux系统及其应用程序开发具有很大帮助。

相关推荐