Bei der Entwicklung eines Kernelmoduls unter Linux ist die Verwendung der C-Standardbibliothek nicht zulässig.
Wenn ich jedoch einige allgemeine Funktionen wie strcat()
verwenden muss, wohin muss ich gehen?stdlib.h Alternative im Linux-Kernel?
Antwort
wünschen Was auch immer nicht in den Linux-Kernel implementiert ist, müssen Sie sich selbst implementieren oder von einem anderen Open-Source-Kernel-Modul ausleihen. Sie werden jedoch feststellen, dass strcat
im Kernel implementiert ist.
Siehe die kernel API Dokumentation. Insbesondere der Basic C Library Functions Abschnitt für Ihre allgemeine Frage und der String Manipulation Abschnitt für Ihre spezifische Frage über strcat
.
Sie möchten linux/string.h
einschließen.
Ich weiß nicht, warum die Kernel-API-Dokumentation tatsächlich nicht die Header-Datei zeigt, die Sie enthalten müssen, um die Funktion zu erhalten. Aber wenn Sie nach etwas suchen, können Sie Ihre Suche auf /include/linux
beschränken, da die Header-Dateien dort liegen, wenn sie Funktionen haben, die von verschiedenen Teilen des Kernels gemeinsam genutzt werden.
Header-Dateien außerhalb /include/linux
enthalten Definitionen nur für Quelldateien, die sich im selben Verzeichnis wie der Header befinden. Die Ausnahme ist /arch/.../include
, die architekturspezifische Header anstelle plattformunabhängiger Header enthält.
Tut mir leid @eq - denke an eine andere Funktion.
Warum nicht
void (char *d, const char *s);
{
if (*d)
{
for (; *d; ++d) {} ;
--d;
}
strcpy(d, s);
}
Ich konnte strcpy
tun, wenn Sie
@indiv - Ups das Denken ist richtig. Diese Funktionen können jederzeit erreicht werden. –
Sind wir alle glücklich wie - trotz dass eine String-Funktion eine Bibliothek benötigt ?! –
... Und ist der Linux-Kernel in C geschrieben? –
- 1. Android NDK R8E fehlt stdlib.h
- 2. stdlib.h hat keine Erklärung für putenv
- 3. firebug alternative im internet explorer
- 4. Alternative zum MegaProtoUser im Lift
- 5. was ist die alternative iproute2 für os x
- 6. Was ist der Unterschied zwischen cstdlib und stdlib.h?
- 7. Subject Alternative Name nicht im Zertifikat
- 8. JSONObject Alternative im Frühjahr und Jackson
- 9. Alternative zu BitmapImage-Operationen im UI-Thread?
- 10. css3 funktioniert nicht im Kompatibilitätsmodus, keine Alternative?
- 11. Was ist der Hauptunterschied zwischen stdlib.h und cstdlib in C++?
- 12. Parameter an qsort() Funktion von <stdlib.h>
- 13. Spielen Sie Framework 2.0. Benutze eine alternative application.conf im Test
- 14. Style die alternative Zeile im Tabellenlayout anders bei der Suche
- 15. SQL-Server-Alternative für Linux im Sinne der SQL-Syntax
- 16. Alternative InStr
- 17. PDFTK Alternative
- 18. nativeElement.classList.add() Alternative
- 19. CGRectMake alternative
- 20. Mungo Alternative?
- 21. SlickUpload Alternative
- 22. com.android.camera.action.CROP Alternative?
- 23. sun.reflect.Reflection.getCallerClass alternative
- 24. org.apache.http.util.ByteArrayBuffer Alternative
- 25. arguments.callee alternative
- 26. OnTime Alternative?
- 27. Suhosin Alternative
- 28. Gitosis Alternative?
- 29. SimpleCursorAdapter Alternative
- 30. parseInt Alternative
Gibt es eine Liste der Header-Dateien, in denen diese Art von Funktionen gehalten werden? (wie du 'linux \ string.h' erwähnt hast) – Fairview
@Fairview: Nicht dass ich finden könnte, was merkwürdig ist. Ich denke, Sie müssen die gewünschte Funktion in der Kernel-API suchen und danach in '/ include/linux' suchen. Ich habe mehr Details in meiner Antwort zu Header-Dateien im Kernel hinzugefügt und warum Sie Ihre Suche auf '/ include/linux' und seine Unterverzeichnisse beschränken können. – indiv