草庐IT

inotify_event

全部标签

linux - 在 Linux 上通过 NFS 触发 inotify 事件?

我可以在Linux上触发一个文件系统事件,而不需要实际的文件更改吗?是否有一些系统调用就像文件被写入一样?这可能吗?我安装了一个NFS共享,并希望在服务器站点上的文件更改时在虚拟机中获取inotify事件。inotify似乎不适用于NFS。是否有支持inotify的网络文件系统?监控服务器端的事件很容易,但是如何触发客户端的事件呢?在那一刻,我做了一个简单的touch,但这并不理想。(用例用于使用docker进行本地开发(boot2docker,OSX。) 最佳答案 抱歉,这不是一项功能。您可以通过使用incrond监视本地文件系统

linux - 将 epoll 与设备(/dev/event/...)一起使用是否有效?

我正在开发一个单线程进程小程序,它创建一个代理虚拟设备(更准确地说是一个虚拟Xbox360pad);我确实设法用uinput创建了它界面,我正确设置了它,它工作得很好。为了向这个虚拟设备提供命令,我从另一个真实接口(interface)(在本例中是一个PS3pad)读取事件,然后我打开带有这些标志的真实设备文件:fd=open("/dev/input/event22",O_RDONLY);//openthePS3pad主循环类似于(减去错误检查):while(run){input_eventev={0};read(fd,&ev,sizeof(structinput_event));//

c - 可以检索 glib 'event?' 上剩余的时间

我正在使用返回事件ID的g_timeout_add或g_timeout_add_seconds创建一个事件;我可以通过调用g_source_remove取消事件。但是,在某些时候我想做的是查看事件触发前剩余的时间。是否有使用glibapi执行此操作的简单方法,或者我是否需要手动存储时间戳并将其与g_source_get_current_time进行比较? 最佳答案 在GLib中没有合理的方法来做到这一点。不合理的方法是获取GSource(g_main_context_find_source_by_id),然后在GSource上调用s

c - 如何在 Linux 内核中进行分析或使用 perf_event*.[hc] 框架?

我注意到arch/arm/kernel下有一些分析源代码:perf_event.cperf_event_cpu.cperf_event_v6.cperf_event_v7.cperf_event_xscale.c我无法理解这些文件的层次结构,我该如何使用它们?我可以假设它们总是存在并在内核模块中使用它们吗?我的内核模块在Cortex-A7或Cortex-A15内核上运行。/arch/arm/kernel/目录下似乎有很多非常有用的东西,但没有关于功能的文档?怎么来的? 最佳答案 Perf_event确实提供了一个可以以编程方式使用的

linux - 在多线程程序中为 Inotify 添加 watch

我想使用inotify来监控我的C程序中的一些文件。我想知道让一个线程从inotify描述符(由inotify_init返回的)读取是否安全,从而阻塞直到某个事件发生,在此等待期间可能会添加新的在其他线程等待期间使用inotify_add_watch将文件发送到watch队列。我是否需要同步这些操作或者这样做是否安全? 最佳答案 没有确切的答案,但我从经验中知道,如果不触发正在使用inotify的线程中的read(),您甚至无法在另一个线程中打开文件。我记得读过你需要使用inotify_init1()和IN_CLOEXEcflags

linux - 如何将 Linux 键码从/dev/input/event* 转换为 ASCII

我正在尝试将从/dev/input/event0中定义的值中读取的键盘事件转换为它们在未运行X或终端的嵌入式应用程序中的ASCII等价物。我认为这应该通过Linux中定义的键映射功能来完成,而不是仅仅创建我自己的std::map但我似乎找不到一个好的起点。到目前为止,我发现的大多数示例都假定我正在使用X窗口或终端运行。 最佳答案 文本输入(除了非常简单的传统美式键盘和7位ASCII标准)是一个极其复杂的领域。我强烈建议您使用X客户端执行此操作,您可以在其中利用所有现有的输入法。但如果您必须这样做,并且您对一种键盘和一种语言感到满意,

c++ - 使用 inotify 监控文件

我正在使用inotify来监控本地文件,例如使用“/root/temp”inotify_add_watch(fd,"/root/temp",mask).当这个文件被删除时,程序会被read(fd,buf,bufSize)函数阻塞。即使我创建了一个新的“/root/temp”文件,该程序仍然被读取功能阻塞。我想知道inotify是否可以检测到被监视的文件已创建,并且read函数可以从fd中获取一些东西,这样read就不会永远被阻塞。这是我的代码:uint32_tmask=IN_ALL_EVENTS;intfd=inotify_init();intwd=inotify_add_watch(

c - inotify C 头文件

所以我正在尝试编写一个使用inotify的C程序。我以前使用过pyinotify,所以我了解它是如何工作的。但是,我正在遵循一些指南,它告诉我包括.问题是这个头文件只有宏定义,没有函数原型(prototype)。看起来这些函数的原型(prototype)在中.我的问题是linux/inotify.h之间有什么区别?和sys/inotify.h?为什么两者都有? 最佳答案 sys/inotify.h是GNUClibrary的一部分.它公开了您的程序将使用的结构和函数,以便接收文件系统更改通知。可以认为是通知系统的公共(public)A

c++ - inotify 不在文件修改时触发通知

我一直在调整示例here使其反复监视文件的“修改”。我的密码是here.在我的测试中,inotify通知仅在文件第一次“修改”(即touch)时触发。对该文件的任何后续修改都不会导致触发任何通知。stat显示“修改”时间已更改。此外,修改代码以删除watch并在每次触发通知时重新添加(即移动inotify_add_watch和inotify_rm_watch到while(1)在我的sample中循环)没有帮助解决这个问题。我想知道这里是否有人可以帮助解决我可能做错的事情。此外,虽然我添加了一个监视IN_ALL_EVENTS的事件,但我实际上只关心IN_MODIFY事件。不确定这是否有任

linux - perf_event_open 溢出信号

我想计算(或多或少)一段代码的确切指令数量。此外,我希望在通过特定数量的指令后收到信号。为此,我使用了由perf_event_open.我正在使用联机帮助页建议的第二种方式来实现溢出信号:SignaloverflowEventscanbesettodeliverasignalwhenathresholdiscrossed.Thesignalhandlerissetupusingthepoll(2),select(2),epoll(2)andfcntl(2),systemcalls.[...]TheotherwayisbyuseofthePERF_EVENT_IOC_REFRESHioc