现在位置: 首页 > linux编程
2019-10-19 07:49 工业·编程 ⁄ 共 2667字 暂无评论
最近在linux下写一个库,是给别人用的,要用到定时器这个功能,而且是多定时器任务的,在windows下实现是很方便的,但是在linux下就遇到了问题,linux下一个进程只能有一个定时器,如果我用了定时器去实现我的任务,那肯定是没问题的,如果用我库的人自己也创建了一个定时器,那么问题就出现了,我的定时器就被覆盖了。 我的功能肯定也受到了影响,所以linux下的定时器是需要解决的。 没办法,我就自己写了一个定时器类似功能的...
阅读全文
概述: 用popen函数,然后用fgets函数读数据,检查输出结果. 这里需要注意的是popen和pclose函数结对使用。 标准I/O函数库提供了popen函数,它启动另外一个进程去执行一个shell命令行。这里我们称调用popen的进程为父进程,由popen启动的进程称为子进程。 popen函数还创建一个管道用于父子进程间通信。父进程要么从管道读信息,要么向管道写信息,至于是读还是写取决于父进程调用popen时传递的参数。 函数介绍: FILE *popen(cons...
阅读全文
dlopen 功能:打开一个动态链接库 包含头文件: #include <dlfcn.h> 函数定义: void * dlopen( const char * pathname, int mode ); 函数描述: 在dlopen的函数以指定模式打开指定的动态连接库文件,并返回一个句柄给调用进程。使用dlclose()来卸载打开的库。 mode:分为这两种 RTLD_LAZY 暂缓决定,等有需要时再解出符号 RTLD_NOW 立即决定,返回前解...
阅读全文
一 概述 传统的应用编写时,每添加一个模块,都需要在main中添加新模块的初始化。也就是说增加的一个不能算是真正的独立模块,得在main中修改代码才能集成这模块功能。有没有什么办法可以实现main跟其他模块之间隔离呢?main不再关心有什么模块,模块的删减也不需要修改main? 二 liunx内核模块初始化 如果你对liunx模块有一定了解,你应该知道liunx模块都是独立加载,加载模块,不需要修改main代码。甚至不需要重新编译代码。...
阅读全文
系统调用 操作系统的主要功能是为管理硬件资源和为应用程序开发人员提供良好的环境,但是计算机系统的各种硬件资源是有限的,因此为了保证每一个进程都能安全的执行。处理器设有两种模式:“用户模式”与“内核模式”。一些容易发生安全问题的操作都被限制在只有内核模式下才可以执行,例如I/O操作,修改基址寄存器内容等。而连接用户模式和内核模式的接口称之为系统调用。 应用程序代码运行在用户模式下,当应用程序需要实现内核模...
阅读全文
2019-05-04 06:49 工业·编程 ⁄ 共 16360字 暂无评论
——linux版本: 3.14.38 netlink支持用户进程和内核相互交互(两边都可以主动发起),同时还支持用户进程之间相互交互(虽然这种应用通常都采用unix-sock) 但是有一点需要注意,内核不支持接收netlink组播消息 本文将从用户进程发送一个netlink消息开始,对整个netlink消息通信原理进行展开分析 用户进程一般都通过调用sendmsg来向内核或其他进程发送netlink消息(有关sendmsg系统调用的公用部分代码解析将在另一片文章中展开) &...
阅读全文
2019-05-03 06:41 工业·编程 ⁄ 共 12226字 暂无评论
——linux版本:3.14.38 目前为止,netlink协议族支持32种(MAX_LINKS)协议类型,其中已经被预定义的有22种。 在实际项目中,如果有定制化的需求时,最好不要去占用剩下的暂未定义的协议类型ID号,而是使用预定义的通用netlink协议类型NETLINK_GENERIC来进行扩展。 LINUX中跟netlink相关的核心代码位于net/netlink目录中,其中核心头文件主要有3个(这些都是所有协议类型的netlink共享的):       &#...
阅读全文
2019-05-02 06:36 工业·编程 ⁄ 共 6298字 暂无评论
内核版本:3.14.38 netlink是一种用于内核态和用户态进程之间进行数据传输的特殊的IPC机制。 特点:     1) 用户态采用socket风格的API     2) 除了预定义的协议类型之外,支持自定义协议类型     3) 异步通讯     4) 支持消息组播     4) 全双工(特别是支持内核主动发起会话) netlink涉及的数据结构:     1) netlink地址...
阅读全文
2019-01-05 21:27 工业·编程 ⁄ 共 298字 暂无评论
与“非阻塞模式”相关的有两个 标志,就是 O_NONBLOCK与O_NDELAY,这两种参数的结果都是使I/O操作设置为“非阻塞模式”,也就是non-blocking,当进行read/write操作时,不管结果如何,都会马上返回,而不会阻塞。 他们的区别是:在read时,如果读不到数据,O_NDELAY会返回0,由于正常读取到文件末尾时,也会返回0,这样就无法区分是否是遗产隔离,所以就引入了O_NONBLOCK,在读不到数据时,返回-1,并且设置errno为EAGAIN,而读到结尾...
阅读全文
2019-01-03 21:15 工业·编程 ⁄ 共 551字 暂无评论
关于函数fcntl的参数讲解的比较多,但是这个函数功能只有简单的一句话“fcntl函数可以改变已经打开文件的属性”。 我们知道,在Unix/linux环境下,不管是设备、I/O、socket等等,几乎一切都是文件,所以fcntl的功能就是对于这些设备、文件、I/O的属性进行设定,比如常用的功能: 1、复制一个已有的描述符,类似于dup函数功能。 2、获取/设置文件描述符标志。 3、获取/设置文件状态标志。 4、获取/设置一步I/O所有权。 5、获取/设...
阅读全文