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?
Antworten
Zu viele Anzeigen?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.
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".
Für C++ könnten Sie versuchen boost::filesystem .
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.