5 Stimmen

Setzen von Dateiattributen mit Hilfe nativer C/C++-Funktionen

Ich weiß, wie man unter Windows mit der Funktion SetFileAttributes Dateiattribute festlegt. Aber ich frage mich, ob es eine systemeigene C/C++-Funktion gibt, die dies ebenfalls tun kann?

0 Stimmen

"Native C/C++-Funktion" ist wahrscheinlich nicht das, wonach Sie fragen. SetFileAttributes() ist eine native C-Funktion. Ich vermute, dass Sie nach einer portablen und/oder standardisierten Funktion suchen.

1 Stimmen

Eine Motivation für Skriptsprachen wie Perl oder Python besteht darin, dass sie sich bemühen, eine plattformübergreifende API für Dinge bereitzustellen, die nicht universell plattformübergreifend sind.

12voto

Nein, gibt es nicht. Weder Standard C++ noch Standard C spezifizieren solche Funktionen.

Der Grund dafür ist, dass es in diesem Bereich nur sehr wenige Gemeinsamkeiten zwischen den verschiedenen Betriebssystemen gibt. Beispielsweise haben UNIX-ähnliche Betriebssysteme ein Attribut "ausführbar", während Windows-ähnliche Betriebssysteme die Dateierweiterung zur Bestimmung der Ausführbarkeit verwenden.

5voto

Adam Wright Punkte 48270

Wenn Sie mit "nativ" die C-Standardbibliothek meinen, dann nein. Datei-"Attribute" sind eine betriebssystemspezifische Erweiterung, die in keinem Standardfunktionssatz vorkommt. Wenn wir bereit sind, unseren Aufgabenbereich auf POSIX auszudehnen, dann gibt es Funktionen wie fchmod, aber diese behandeln nur UNIX-artige Dateimodi, die nicht so ausdrucksstark sind wie Windows-Dateiattribute.

Im Allgemeinen können Sie jede Frage der Form "Gibt es eine STANDARD-Funktion/ein STANDARD-Objekt, um etwas OS-SPEZIFISCHes zu tun" mit "Wahrscheinlich, wenn STANDARD nur für OS existiert. Andernfalls, nein".

4voto

JesperE Punkte 61161

Unter Windows gibt es eine _chmod Funktion, die das Verhalten der chmod-Funktion unter Unix nachahmt.

-1voto

Oktalist Punkte 13666

Für C++ könnten Sie versuchen boost::filesystem .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X