Ich schreibe ein Userspace-Programm, das mit dem USB-Video-Playback-Controller interagiert. Ich programmiere in C++ und das Programm soll unter Linux laufen. Während ich das libusb Handbuch studierte, stieß ich auf die void libusb_exit (struct libusb_context * ctx)
Funktion.Was sind die Konsequenzen von nicht aufrufen libusb_exit()
Die Beschreibung says:
Deinitialize libusb.
Sollte nach dem Schließen aller geöffneten Geräte aufgerufen werden und bevor Ihre Anwendung beendet wird.
Das Handbuch erklärt nicht, warum es benötigt wird. Ich wurde neugierig auf die Konsequenzen der Beendigung eines Programms, das libusb initialisiert und verwendet hatte, ohne libusb_exit()
zu rufen. Kann jemand erklären, was schlimme Dinge passieren können, wenn mein Programm aus irgendwelchen Gründen libusb_exit()
vor dem Beenden nicht aufrufen kann? Werden Systemressourcen auslaufen?
Ich denke, Sie missverstehen (oder nicht ansprechen) die Frage. IIUC fragt, warum es notwendig wäre, 'libusb_exit' zu nennen, bevor der Prozess beendet wird (wiederum, IIUC, das ist eigentlich nicht notwendig). Deine Erwähnung von _crashes_ ist verwirrend. Wie schafft es die Bibliothek, mit den Kontexten anders umzugehen, wenn die Anwendung _crashes_ im Vergleich zum sauberen Beenden? – davmac