O sistema operacional despacha eventos em gravação no disco?

0

Eu queria saber se existe alguma maneira de determinar quando um arquivo termina escrevendo em um diretório no Windows e Linux (obviamente, eles provavelmente serão dois comandos diferentes).

Isso é principalmente para que, em vez de pesquisar constantemente um diretório para novos arquivos não temporários, eu possa configurar um programa para simplesmente ouvir a conclusão de um write-to-disk (parece melhor fazer as coisas dessa maneira ).

    
por cwallenpoole 11.07.2011 / 17:16

3 respostas

2
  1. Arquivos não "gravam em diretórios". Os dados são gravados em arquivos e os arquivos podem estar vinculados a diretórios. Mas o processo de gravação de dados no arquivo não tem nada a ver com o diretório; e o processo de vinculação difícil é atômico e não tem "acabamento" para esperar.
  2. No Windows, a função que você está procurando é FindFirstChangeNotification() .
  3. Este é um tópico do StackOverflow, não um do SuperUser.
por 19.07.2011 / 14:35
1

Para o linux, você pode dar uma olhada nessa questão , a discussão foi em c ++, mas a idéia (das respostas, não apenas a escolhida) ainda é boa. Basicamente, no linux você pode usar alguns sinalizadores ou assistir ao processo /proc/pid/fd .

    
por 11.07.2011 / 17:37
1

Windows, pelo menos desde o Vista, há um sistema de agendamento de E / S:

Priorização de E / S no Windows Vista .

Além disso, discos SATA modernos no modo AHCI têm seu próprio agendador integrado - chamado Native Command Queuing (NCQ) .

    
por 12.07.2011 / 13:15

Tags