2013-01-13 4 views
6

Ist Kqueue (unter OS X) nützlich zum Lesen/Schreiben von regulären Dateien? Ich weiß, dass Epoll ist nicht nützlich für normale Dateien auf Linux, so frage ich mich, ob das gleiche gilt für kqueue.Kqueue auf regulären Dateien

EDIT: Ich meine nicht lesen/schreiben Dateien, offensichtlich lesen() und write() sind dafür. Ich meinte, "ist Kqueue tatsächlich nützlich, um zu erkennen, wenn eine Datei lesbar/schreibbar ist?"

Antwort

1

Ja, kqueue kann verwendet werden, um Dateien auf Lesbarkeit zu prüfen. Aus der Manpage:

EVFILT_READ  Takes a file descriptor as the identifier, and returns 
        whenever there is data available to read. The behavior 
        of the filter is slightly different depending on the 
        descriptor type. 

[...] 

        Vnodes 
         Returns when the file pointer is not at the end of 
         file. data contains the offset from current posi- 
         tion to end of file, and may be negative. 

(. „Vnodes“, in diesem Zusammenhang sind normale Dateien)

Als regelmäßige Dateien immer beschreibbar sind, macht es keinen Sinn EVFILT_WRITE auf sich anzuwenden.

+0

Woher wissen Sie, dass reguläre Dateien immer beschreibbar sind? –

+0

Dateien werden nicht vorübergehend nicht schreibbar (von "voll") auf die gleiche Art und Weise wie Sockets, Pipes und was nicht. – duskwuff

+0

@duskwuff nein, aber sie blockieren definitiv. Sie können Anwendungsverzögerungen verursachen. Der ganze Sinn der Verwendung dieser Mechanismen ist Signal und Ereignis auf diesen Ressourcen und wenn diese Ressourcen zugreifen wird nicht in Bezug auf diese Ereignisse blockieren. "volles" Konzept ist irrelevant. – Rahly

1

Kernel-Warteschlangen sind Mechanismen, die "allow you to intercept kernel-level events to receive notifications about changes to sockets, processes, the file system and other aspects of the system."

ich sie in der Vergangenheit detect when when actions happen on a file verwendet haben (oder in einem Hotfolder). Ich glaube nicht, dass sie zum "Lesen" und "Schreiben" von Dateien verwendet werden können. Sie können dazu auch MacOS-native Funktionen oder normale UN * X-Styles "", "fwrite" und "fread" aufrufen, wenn Sie möchten.

Verwandte Themen