linux c 编程 ------ 常见函数
fork():创建一个进程
exec():停止当前进程中程序的执行,让当前进程执行另一个程序
access():查看是否有操作文件的权限,可以用来判断一个文件是否存在
pipe():无名管道,用在父子进程间通信
mkfifo():有名管道,用在进程间通信
消息队列:进程间通信
结构体成员A的结构体首地址 container_of(结构体成员A的指针, 结构体类型, 结构体成员A)
#include <stdio.h> #include <linux/kernel.h> struct student { char name[20]; char sex; }; #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) #define container_of(ptr, type, member) ({ \ const typeof( ((type *)0)->member ) *__mptr = (ptr); \ (type *)( (char *)__mptr - offsetof(type,member) );}) int main() { struct student st={"zhangsan",'m'}; struct student *tmp; char *ptr_name=st.name; tmp=container_of(ptr_name,struct student,name); printf("tmp->name=%s\n",tmp->name); printf("tmp->sex=%c\n",tmp->sex); return 0; }
ioctl是设备驱动程序中对设备的I/O通道进行管理的函数。所谓对I/O通道进行管理,就是对设备的一些特性进行控制,例如串口的传输波特率、马达的转速等等。它的调用个数如下:
int ioctl(int fd, ind cmd, …);
其中fd是用户程序打开设备时使用open函数返回的文件标示符,cmd是用户程序对设备的控制命令,至于后面的省略号,那是一些补充参数,一般最多一个,这个参数的有无和cmd的意义相关。
标签:
linux 系统编程
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
2017-03-25 ES6 --- ECMAScript 6