Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6382103
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 25, 20262026-05-25T02:28:46+00:00 2026-05-25T02:28:46+00:00

Suppose I want to invoke some command on all files in a directory and

  • 0

Suppose I want to invoke some command on all files in a directory and set a watch to invoke that command on all files that get created in that directory. If I do:

while( ( sdi = readdir( d )) != NULL ) { ... }
closedir( d );
/* Files created here will be missed */
inotify_add_watch( ... );

then some files will potentially be missed. If I call inotify_add_watch() before the readdir(), files may be acted on twice (it would require a fair bit of infrastructure to prevent acting twice, and it seems that the edge cases would be difficult to handle). Is there a simple way to avoid having to record the names of all files worked on during the readdir loop and comparing those to the names returned in the inotify_event structure? I can
minimize the amount of necessary comparisons with:

while( ( sdi = readdir( d )) != NULL ) { ... }
inotify_add_watch( ... );
while( ( sdi = readdir( d )) != NULL ) { /* record name */ ... }
closedir( d );

And usually the second readdir() loop will do nothing, but this feels like a bad hack.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-25T02:28:46+00:00Added an answer on May 25, 2026 at 2:28 am

    You simply can’t. The more you hack, the more race conditions you’ll get.

    The simplest actually working solution is to set the watch before using opendir(), and keep a list (set) of already used names (or their hashes).

    But this isn’t perfect either. User can have the file open in a text editor; you fix it, user saves it and the directory contains unfixed file anyway, though it’s on your list.

    The best method would be to be able for the program to actually distinguish used files by their content. In other words, you set watch, call command on readdir() results, then call it on inotify results and let the command itself know whether the file is fine already or not.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Suppose I want to create a set of observers based on type. That is
Suppose I want to put objects that identify a server into a stl set
Here's some simple code that, for each argument specified, will add specific get/set methods
I want to execute ANT delete target, so that I can delete all files
Suppose I want to implement a reasonably efficient 'keyword recognition algorithm', that is first
Suppose I want to count the lines of code in a project. If all
Hello All I am writing some software that will allow users to create their
Suppose I have a stream of [acme] objects that I want to expose via
I'm developing a program that receives some data and after processing I want to
Suppose I want to open a file in an existing Emacs session using su

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.