1

我在 C 中实现了一个 SMTP-sender,它应该在创建目录时从目录中读取文件,处理数据并删除文件。

如何实现这个应该自动执行的轮询功能?

4

2 回答 2

5

一个简单的选择是定期从cron运行您的程序。该程序可以使用 Linux API 调用readdir来遍历目录。它不必主动监视目录。

这是一个简单的代码示例:

#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
int main()
{
   DIR* dp = opendir(".");
   struct dirent* de;
   while (de = readdir(dp))
   { 
     if (de->d_type != DT_REG) // Only print regular files
        continue;
      printf("Found file %s\n", de->d_name);
   }
   closedir(dp);
}

免责声明:为了简单起见,我没有包含检查或处理错误条件的代码。

于 2009-11-11T13:40:12.607 回答
3

查看inotify并查看它是否足以满足您的需求。inotify 允许您使用单个文件描述符来监视目标目录中的事件。您可以使用 select() 避免轮询,并立即通知目录中创建的任何文件,以便您进行处理。

本文有一些示例代码。我相信还有其他关于网络的例子。

于 2009-11-11T13:20:51.183 回答