Mam zamiar napisać leksykon, który będzie częścią modułu jądra, w którym sparsuję plik i zwrócę tokeny. W tym celu potrzebuję użyć funkcji takich jak fopen, getc, putc, fseek itd., Które oczywiście są funkcjami przestrzeni użytkownika. Szukałem alternatywy dla tych funkcji w przestrzeni jądra i znalazłem funkcje takie jak open, filp_open, sys_open itd., Które, jak sądzę, byłyby dla mnie w porządku. Ale co chcę wiedzieć, czy funkcje takie jak getc, putc, seek itp. (Które mogą być bardzo przydatne w operacjach na plikach), są dostępne w przestrzeni jądra?Czy proste funkcje obsługi plików C, takie jak getc, putc and seek, są dostępne w jądrze Linuksa?
Odpowiedz
Nie.
Czytanie plików, a szczególnie skomplikowanych plików konfiguracyjnych, nie jest czymś, co powinno być zrobione z jądra.
Istnieje wiele informacji o tym, dlaczego jest to zły pomysł. The KernelNewbies FAQ to dobry początek.
Naprawdę, naprawdę tego nie rób. Integruję wiele kodów dostawcy (kernela) i jest to jeden z błędów, który ciągle nas atakuje. Naucz się robić rzeczy we właściwy sposób od samego początku.
Po tym, jak ktoś (... z dekadami doświadczenia jądra ...) dotrze do końca tego odnośnika i stwierdzi, że dla ich wbudowanego produktu jedyny sposób na czy "to" to zignorować poradę "Nie", jak to się dzieje? Nie martw się - mogę odczytać źródło. Po prostu mam dość odpowiedzi takich jak "Nie" tutaj. Wcale nie pomocne. Głosowałem w dół na twoją odpowiedź, ale jestem zbyt zajęty, aby kliknąć przycisk "W dół" ... –
Zobacz, mogę zgodzić się, że czasami jest to wymagane (jak na serwerze NFS), ale myślę, że zgadzasz się, że " Nie "jest tak naprawdę odpowiedzią Jewel Thief. Dodałem link do krótkiego opisu, ale każdy, kto * naprawdę * tego potrzebuje, znajdzie go w 5 minut, a zachęci to tylko tych, którzy i tak nie powinni tego robić. –
Nie, nie zgadzam się, że "Do not" nie jest poprawną odpowiedzią, ponieważ brzmi to tak bardzo, jakbyśmy byli bandą Nianów próbujących powstrzymać OP przed zniszczeniem ich maszyny. Twoje usprawiedliwienie, że "nie rób", jest w porządku, ponieważ mogliśmy znaleźć w ciągu 5 minut odrobinę elitarności. Cóż, co jeśli nie chcę spędzić 5, 10, 20 lub ... minut na kopaniu i jestem jedną z "elit", bo naprawdę jestem - moje pierwsze jądro systemu UNIX działa w 1981 roku . –
- 1. Jak spać w jądrze Linuksa?
- 2. Czy idempotentne funkcje są takie same jak czyste funkcje?
- 3. Wywołanie funkcji w jądrze Linuksa
- 4. główna obsługa błędów strony w jądrze Linuksa
- 5. Mierzenie czasu w jądrze Linuksa 2.6
- 6. Czy w Pythonie są dostępne funkcje porównywania wzorców?
- 7. Uzyskiwanie listy urządzeń sieciowych w jądrze Linuksa
- 8. hrtimer powtarzające się zadanie w jądrze Linuksa
- 9. C# zdarzenia: Jak zmienne są dostępne
- 10. Co to są przestawienia przerwań (RES)? Co to powoduje? Jak jest obsługiwany w jądrze Linuksa?
- 11. Czy są dostępne skalowalne systemy przechowywania plików typu open source?
- 12. getc() vs fgetc() - Jakie są główne różnice?
- 13. Jak odczytać sektor za pomocą żądania bio w jądrze Linuksa
- 14. Jak odczytać sektor za pomocą żądania biologicznego w jądrze Linuksa
- 15. Czy zewnętrzne funkcje "C" są osobnym rodzajem?
- 16. Implementacja wywołań systemowych/pułapek w jądrze Linuksa źródło
- 17. Czy w CSS dostępne są komentarze wielowierszowe?
- 18. Używanie podwójnego wskaźnika w jądrze Linuksa Implementacja listy skrótów
- 19. Implementacja poprawnej synchronizacji między modułami w jądrze Linuksa
- 20. Który kontekst danej funkcji jest wywoływany w jądrze Linuksa
- 21. Czy są dostępne dobre biblioteki funkcji do kolekcjonowania w Javie, takie jak
- 22. Limit linii Shebang w bashu i jądrze Linuksa
- 23. Czy anonimowe typy w języku C# są dostępne poprzez odbicie?
- 24. C# określić, czy wszystkie znaki w ciągu są takie same
- 25. Przejście z trybu rzeczywistego do chronionego w jądrze Linuksa
- 26. Czy drools są takie same jak jrules?
- 27. Chcę wiedzieć, jakie funkcje są dostępne z pliku Win32.DLL
- 28. seek() odpowiednik w javascript/node.js?
- 29. Pokaż funkcje, takie jak '+' lub '[' jak
- 30. Czy funkcje obiektu DbContext są niedostępne w ObjectContext?
Dlaczego chcesz umieścić to w jądrze w pierwszej kolejności? – Nobody
Myślę, że open to wywołanie systemowe. –
@ Nikt nie piszę modułu jądra, który wymagałby parsowania pliku konfiguracyjnego dla niektórych funkcji. –