#define _GNU_SOURCE
#include <errno.h>
#include <fcntl.h>
#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/fanotify.h>
#include <sys/stat.h>
#include <unistd.h>
#include <string.h>
#define BUF_SIZE 1024
/**
* 根据pid获取进程名
*/
void getNameByPid(pid_t pid, char *task_name)
{
char proc_pid_path[BUF_SIZE];
char buf[BUF_SIZE];
sprintf(proc_pid_path, "/proc/%d/status", pid);
FILE *fp = fopen(proc_pid_path, "r");
if (NULL != fp) {
if (fgets(buf, BUF_SIZE - 1, fp) == NULL) {
fclose(fp);
}
fclose(fp);
sscanf(buf, "%*s %s", task_name);
}
}
int main(int argc, char** argv)
{
int fan;
int mount_fd, event_fd;
char buf[4096];
char fdpath[32];
char path[PATH_MAX + 1];
struct file_handle *file_handle;
ssize_t buflen, linklen;
struct fanotify_event_metadata *metad
fanotify监控文件使用案例及输出操作的进程名和PID
最新推荐文章于 2025-04-25 11:21:56 发布
该程序示例展示了如何利用fanotify系统调用监控指定目录下的文件系统事件,如创建、删除、移动和修改文件。它读取fanotify事件并解析相关信息,包括触发事件的进程名和文件路径。

最低0.47元/天 解锁文章
428

被折叠的 条评论
为什么被折叠?



