簡體   English   中英

讀取目錄中文件的功能

[英]Function to read files one by one in a directory

我正在C中實現一個SMTP發送器,該發送器應該在創建目錄時從目錄中讀取文件,處理數據並刪除該文件。

我該如何實現應自動執行的輪詢功能?

一個簡單的選擇是從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);
}

免責聲明:為簡單起見,我沒有包含用於檢查或處理錯誤情況的代碼。

查看inotify ,看看它是否能滿足您的需求。 inotify允許您使用單個文件描述符來監視目標目錄中的事件。 您可以通過使用select()避免輪詢,並會立即收到目錄中創建的任何文件的通知,以便您進行處理。

本文提供了一些示例代碼。 我敢肯定,還有其他有關網絡的例子。

通過我從您的問題中得到的信息,它很適合進行進程間通信。

您說在目錄中的文件創建時需要通知您。 現在,我認為通過文件進行進程間通信是不好的。

在Unix中, 本指南詳細介紹了進程間通信的幾種替代方法。 使用Unix套接字是最簡單的方法。

如果編寫了另一個進程,該進程現在創建了一個用於進程間通信的文件,則可以更改實現以將其寫入套接字。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM