Ich sollte eine Funktion schreiben, um einige Informationen über das System zu bekommen (die wichtigste Information ist die Architektur). Ich habe die Funktion uname gefunden, die verwendet werden kann, einschließlich sys/utsname.h. Nun, obwohl ich gegoogelt habe und ich die Dokumentation gelesen habe, konnte ich kein Beispiel für die Funktion finden und ich verstehe nicht, wie man uname verwendet. Jeder kann mir erklären, wie man es benutzt? Es wäre großartig, wenn Sie auch ein Beispiel schreiben könnten. Danke im Voraus.C wie benutze ich die Funktion uname
Antwort
Die Funktion uname()
übernimmt einen Zeiger auf die Struktur utsname
, die das Ergebnis als Eingabe speichert. Erstellen Sie daher einfach eine temporäre utsname
Instanz, übergeben Sie die Adresse davon an uname
und lesen Sie den Inhalt dieser Struktur, nachdem die Funktion erfolgreich ausgeführt wurde.
struct utsname retval;
if(uname(&retval) < 0) { // <----
perror("Failed to uname");
// error handling...
} else {
printf("System name = %s\n", retval.sysname);
// print other info....
// see http://www.opengroup.org/onlinepubs/009695399/basedefs/sys/utsname.h.html
// for other members...
}
Zunächst umfassen die Header:
#include <sys/utsname.h>
Dann definieren eine utsname Struktur:
struct utsname unameData;
Dann rufen uname() mit einem Zeiger auf die Struktur:
uname(&unameData); // Might check return value here (non-0 = failure)
Danach wird die Struktur wil l enthalten Informationen, die Sie wollen:
printf("%s", unameData.sysname);
http://opengroup.org/onlinepubs/007908775/xsh/sysutsname.h.html
Aus der Dokumentation, es sieht aus wie Sie es wie so verwenden würde:
struct utsname my_uname;
if(uname(&my_uname) == -1)
printf("uname call failed!");
else
printf("System name: %s\nNodename:%s\nRelease:%s\nVersion:%s\nMachine:%s\n",
my_uname.sysname, my_uname.nodename, my_uname.release,my_uname.version,my_uname.machine);
Ein voll funktionsfähiges Beispiel ist mehr als tausend Worte . ;-)
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/utsname.h>
int main(void) {
struct utsname buffer;
errno = 0;
if (uname(&buffer) != 0) {
perror("uname");
exit(EXIT_FAILURE);
}
printf("system name = %s\n", buffer.sysname);
printf("node name = %s\n", buffer.nodename);
printf("release = %s\n", buffer.release);
printf("version = %s\n", buffer.version);
printf("machine = %s\n", buffer.machine);
#ifdef _GNU_SOURCE
printf("domain name = %s\n", buffer.domainname);
#endif
return EXIT_SUCCESS;
}
Sollte "perror" auf Fehler verwenden. Es ist nicht nötig, das 'EFAULT' zu behandeln (es wird nicht in Ihrem Code passieren, da' buffer' eine gültige Adresse einer lokalen Variablen ist) –
Danke Basile. In der Tat ist 'perror' besser als' switch (errno) 'und ich habe den Beitrag bearbeitet, um das zu reflektieren. Der Code behandelte explizit 'EFAULT', weil ich es mit dem Gedanken an die Lehre geschrieben habe, aber in der Tat würde dieses spezielle Beispiel niemals dorthin gelangen. – tupiniquim
- 1. Wie benutze ich die asin() Funktion in objective c
- 2. Wie benutze ich die Funktion numpy.append
- 3. C++ benutze nackte Funktion
- 4. Wie benutze ich scipy.stats Funktion?
- 5. Benutze ich die PHP.js strpbrk Funktion richtig?
- 6. Wie benutze ich eine JavaScript-Funktion?
- 7. Wie benutze ich öffentliche Funktion Frontend Magento
- 8. Wie benutze ich die Funktion .getLastRow() in Google Skript
- 9. Wie benutze ich die strsplit Funktion mit einem Punkt
- 10. Wie benutze ich die redis publish/subscribe
- 11. AWS Lambda: Wie benutze ich die Kissenbibliothek?
- 12. Wie benutze ich clock() in C++
- 13. Wie benutze ich C# -Objekt von F #?
- 14. Wie benutze ich das "libtomcrypt" in C#
- 15. Wie benutze ich spl_autoload_register?
- 16. Wie benutze ich CSSLint?
- 17. Wie benutze ich navigator.app.exitApp()?
- 18. Wie benutze ich webgrease?
- 19. Wie benutze ich cscope?
- 20. warum bekomme ich einen 404 in einer Seite, die ich zur Zeit benutze, wenn ich eine Callback-Funktion verwenden
- 21. Wie benutze scanf in einer benutzerdefinierten Funktion in C
- 22. Wie benutze ich glslang?
- 23. Wie benutze ich setseed in einer Funktion in postgresql
- 24. C# Wie programmiere ich die Funktion
- 25. Wie benutze ich removeView()?
- 26. Wie benutze ich in R
- 27. Wie benutze ich rand_r und wie benutze ich es threadsicher?
- 28. Wie benutze ich die Slack Web API?
- 29. Wie benutze ich die Lightbox Plugin Colorbox?
- 30. Wie benutze ich die Server-Datenbank?
Wenn Sie Plattform sagen, was meinst du? x86 vs x64? Linux gegen BSD? AMD gegen Intel? –
sorry, ich habe nicht angegeben, ich meine für i686, x86, x64 ... –