Menu
Jest wolny
Zameldować się
główny  /  Programy / Jaki plik konfiguracyjny. Pliki konfiguracyjne.

Jaki plik konfiguracyjny. Pliki konfiguracyjne.

System operacyjny Linux W przeciwieństwie do systemu Windows nie ma wspólnego rejestru do przechowywania ustawień systemu, wszystkie ustawienia są przechowywane w plikach konfiguracyjnych. Większość z tych plików jest opublikowana w folderze / etc / folder.

Ustawienia większości programów systemu i osób trzecich znajdują się w tych plikach, mogą być ustawieniami serwera graficznego, Menedżera logowania, usług systemowych, serwera WWW, systemów inicjalizacji.

Tylko część plików konfiguracyjnych znajdują się w innych folderach, takich jak ustawienie plików środowiska pracy w katalogu domowym użytkownika. Początkujący są bardzo ważni, aby zrozumieć, że są odpowiedzialni za te lub inne pliki konfiguracyjne, tak że jeśli to konieczne, bardzo szybko nawigację. W tym artykule przyjrzymy się głównym plikom konfiguracyjnym Linuksa, ich lokalizacji i celu.

W rzeczywistości w samym systemie Linux nie ma plików konfiguracyjnych. Ponieważ system operacyjny jest tylko zestawem programów i jądra, wszystkie te pliki zostały utworzone przez niektóre programy i czytają przez nich, aby skonfigurować zachowanie. Większość plików, które wykorzystaliśmy do rozważenia standardu, są system inicjalizacji lub innych narzędzi systemowych.

Jak powiedziałem, większość plików jest publikowanych w /t. Nazwa tego folderu jest odszyfrowana jako "et cesa", która z łacińskiego oznacza "i innych" lub "i tak dalej". Po pierwsze, zobaczmy zawartość katalogu / etc Linux:

Jest tu wiele różnych plików. Wtedy rozważymy mianowanie wielu z nich. Lista jest sortowana przez alfabet.

1. / etc / adjtime

Ten plik konfiguracyjny jest odpowiedzialny za konfigurowanie formatu czasu systemu i odczytywania przez SystemD-Timed Service. Czas może być reprezentowany w dwóch opcjach: lokalny - czas aktualnej strefy czasowej i UTC - czas Greenwich. Możesz ręcznie zmienić wartość lub użyć narzędzia TimedateCtl.

2. /etc/bash.bashrc.

Ten plik należy do skorupie poleceń bash. To nie jest całkowicie konfiguracyjny plik - i skrypt, jego zawartość jest wykonywana, gdy instancja bash jest uruchamiana do regulacji powłoki. Podobnie, zawartość pliku ~ / .bashrc dla każdego użytkownika.

3. / etc / crontab

6. / etc / Group

25. / etc / sudoers

/ etc / sudoers to plik konfiguracji. To narzędzie umożliwia wykonanie poleceń w imieniu innych użytkowników, w tym w imieniu Superusera. Ale tylko tych użytkowników, którzy są łączone w tym pliku, mogą go użyć.

26. /etc/sysctl.conf.

Ten plik jest odpowiedzialny za wykonanie. Tutaj możesz określić wszystkie parametry z podsystemu / SYS / i zostaną zapisane po ponownym uruchomieniu.

27. /etc/vconsole.conf.

Ten plik ma tylko jeden cel - Ustaw kodowanie, układ klawiatury i domyślną czcionkę dla wszystkich wirtualnych konsol biegowych przez maszynę.

28. /Boot/grub/gru.cfg.

Ten plik konfiguracji Linux nie jest w / etc, ze względu na jego specjalny cel. Zawiera wszystkie ustawienia bootloadera, elementy menu i inne parametry, dzięki czemu musi być dostępny przed podłączeniem systemu plików root.

wnioski

W tym artykule sprawdziliśmy główne pliki konfiguracyjne Linux, które znajdują się w folderze / etc / folder. Być może wszelkie ważne pliki, twoja opinia, zostaną pominięte, na pewno opowiesz o nich i ich celu w komentarzach!

Profil zadania za pomocą wiersza poleceń - metoda jest daleko od zawsze wygodna. Nawet podczas pracy z większością wiersza poleceń, środowisko służy do zapisywania ustawień, aby nie określić ich za każdym razem i dla każdego zespołu. Co mówić o złożonych usługach systemowych, których właściwości należy zapisać nie z sesji do sesji, ale stale (w tym podczas ponownego uruchomienia systemu). Wyjście jest proste: profil musi być przechowywany w pliku, na przykład co jest tworzone przez polecenie "Zapisz ustawienia".

Jednak podejście do przechowywania profilu w pliku, w którym użytkownik nie może zmienić tego pliku, jest bezpośrednio, ale używa konfiguratorów "Smart", jest wygodnie tylko w przypadkach, w których ustawienia są wiele, a koszt błędu jest Mały (na przykład podczas konfigurowania wyglądu pulpitu). Ogólnie rzecz biorąc, jest dość trudne do ustawienia zachowanie systemy oparte na opisie (często niejawne) właściwości faktu, że system ten powinien otrzymać w rezultacie. Innymi słowy, z opisu tego, co powinno się stać, nie zawsze jest możliwe, aby automatycznie zakończyć, jak należy go uzyskać.

Plik konfiguracyjny.. Plik tekstowy zawierający ustawienia niektórych części systemu (narzędzia, demon itp.). Z reguły jest to czytanie podczas uruchamiania. Typowy dla metody zorganizowania systemu Linux.

Krótko mówiąc, jeśli jest plik konfiguracyjny., Musi istnieć narzędzia do edycji dla tego pliku. Biorąc pod uwagę, że wysoko rozwinięty system przechowywania jest wdrażany w systemie Linuksa przetwarzanie (zarówno ręczne, jak i automatyczne) dane w formularzu tekstowym, aby wymyślić jakiś nowy format jest jak do uruchomienia roweru. Ponadto jest to tekst, który podzielony na łańcuchy i słowa najlepiej nadają się, gdy istnieje wyraźny podział profilu na obiektach sterujących i ich właściwości (na przykład ustawienia pewnego demona i wartości tych ustawień). Ponadto Redaktorzy tekstu Linux są anulowane z teksturami strukturalnymi: VI, Emacs itp.

[Chroniony e-mail]: ~ ~ $ CAT Showmatch ShowCmd Ruler Modeline Set Autoindent Ignorecast Smartcase Set Nohlsearch NoincSearch SET DIR \u003d / VAR / TMP SET Wildmode \u003d Lista: najdłuższa, pełna set Wildmenu "kolorowanki na kolorystyce na kolorystyce Przykład 12.2. Ustawienia Edytor VIM.

Tak wygląda plik konfiguracyjny. W przypadku VIM, napisany przez Metodego na podstawie pliku pobranego z Gerevicha. Łatwo jest zauważyć, że plik polecenia wiersza poleceń VI linii poleceń z komentarzami (w przeciwieństwie do większości narzędzi Linux, w VI komentarze zaczynają się ""). Symbole "^ O" i "^ m" - to odpowiednie znaki kontrolne (włożony w pliku tekstowym za pomocą "^ V", patrz wykład 9). Taki plik konfiguracyjny. Łatwy do zrozumienia i zmiany.

Jak już widać, zestaw zmiennych środowiskowych jest specjalnym profilem, do którego wszystkie programy uruchomione są wrażliwe - to jest jego godność. Zmienne otoczenia są określone w skrypcie poleceń, który można również uznać za plik konfiguracyjny.). Na przykład w wielu rozkładach plik konfiguracyjny. .I18N, aby skonfigurować charakterystykę języka klawiatury, komunikat Język wyjściowy itp. 2 Oznaczenie "I18N" pochodzi ze słowa "internacjonalizacja", w którym 20 liter, tj. "I", "N" i 18 liter między nimi. :

[Chroniony e-mail]: ~ $ Cat .i18n Lang \u003d Ru_en.Koi8-R Język \u003d Ru_en.Koi8-R sysfoncm \u003d koi8-r sysfonontacm \u003d koi8-r sysfont \u003d uniyr_8x16 słownik \u003d rosyjski mpage \u003d "- CKOI8-R" Eksportowy słownik MPage Przykład 12.3. Plik konfiguracyjny funkcji języka

Jednak do przechowywania ustawień konkretnego programu (nie jest potrzebny przez wszystko inne) otoczony - nie najbardziej udanym rozwiązaniem: składnia, która określa zmienną środowiskową, zbyt prostą ( present_name \u003d wartość), a same zmienne stają się zbyt duże, więc podczas oglądania jest trudne do wyboru, który z nich, do którego znajdują się ustawienia grupowe. Jeśli spróbujesz spakować wszystkie ustawienia do wartości jeden Zmienna, ta wartość będzie trudna, a wszystkie zaletę formatu tekstowego przyjdzie na nie. Na przykład standard plik konfiguracyjny. LS Utilities (dokładniej, tylko jego preferencje kolorów) - / etc / Dir_Colors (można go zastąpić osobistym plikiem ~ / .dir_colors) trwa około stu linii wraz z komentarzami. Polecenie LS nie używa tego pliku, ale narzędzie DirColors tworzone przez zmienną LS_Colors, której wartość jest ciągiem 600 znaków bez żadnych komentarzy.

Jeśli profil jest zbyt duży, trzymaj go w jednym plik konfiguracyjny - Więc, aby dostarczyć użytkownik wątpliwą przyjemność zdemontować ten plik całkowicie, jeśli to konieczne, dokonać minimalnej zmiany. Metody zwalczania niewygodnych nieco. W szczególności mechanizm ".d" znany już na wykładzie: plik jest podzielony na kilka niezależny Pliki od siebie, dzięki czemu jest tylko jeden z plików do edycji, a program odczytuje wszystko podczas samego użytku.

Inny sposób polega na tym, co zmianaUżytkownik przyczynia się do profilu, z reguły znacznie mniejszy niż objętość całego profilu. Dlatego też może być korzystne przechowywanie wszystkich domyślnych ustawień w niektórych plikach, co nie jest w ogóle niezbędne, a plik ustawień użytkownika używać jako "na górze", zmieniając profil zgodnie z nimi po Jak ustawia się profil domyślny. Dodatkową zaletą tej metody jest to, że użytkownik zawsze można wprowadzić do pliku "DUG", aby dowiedzieć się, jak to lub inne ustawienie zostało wykonane. Na przykład narzędzie UpdFStab, które zmienia zawartość / etc / FSTAB, gdy lub usuwając wymienny nośnik dysku (na przykład dysk laserowy), odczytuje dane z plik konfiguracyjny /etc/updfstab.conf. Ten plik składa się z pojedynczej linii: dołącz /etc/updfstab.conf.default.Co prowadzi do pliku czytania z ustawieniami domyślnymi, gdzie ustawiony jest sposób na pracę z wieloma wymiennymi urządzeniami systemowymi. Jeśli administrator musi w jakiś sposób zmienić zachowanie UpdFStab w odniesieniu do określonego urządzenia, kopiuje odpowiednią grupę ustawień z UpdFstab.Conf.Default in UpdFstab.Conf po Strits obejmują .. I ich poprawi. Fakt, że te grupy ustawień są czytane dwa razy, nie odgrywają specjalnej roli: czytanie krótkich plików jest wykonywane szybko.

Wreszcie trzeci sposób plik konfiguracyjny. czytelny - partycjonowanie Profil, gdy wszystkie ustawienia są podzielone na grupy, każda grupa otrzymuje własną nazwę i składnię plik konfiguracyjny Jest zaprojektowany tak, aby granice grup różnią się podczas oglądania. W istocie ta metoda jest przodkiem schematu ".d", gdzie grupa odpowiada oddzielnym plikowi, ale sytuacja nie jest niewygodna, gdy pliki są niewygodne (na przykład, jeśli grupy nie są w pełni niezależne, dlatego to może być konieczne, aby je edytować jednocześnie). Plik konfiguracyjny. Narzędzia Wvdial Dial, na przykład partycjonowane przez adresata (Dostawca) oraz oddzielną sekcję "Domyślnie". Sami sekcje są oddzielone od siebie nagłówki zamknięte w nawiasach kwadratowych:

[Chroniony e-mail]: ~ ~\u003e CAT \u003d Modem analogowy Telefon \u003d 0123456 Nazwa użytkownika \u003d Hasło strażakowe \u003d Ogień! Tonline \u003d True Telefon \u003d 0246813 Nazwa użytkownika \u003d Hasło COP-120 \u003d GimmetheGun Force Adres \u003d 10.0.0.120 Przykład 12.4. Partycjonowany plik konfiguracyjny.

Narzędzie Wvdial ma wysoko rozwiniętą sztuczną inteligencję: IT Dignuje niezależnie, który typ identyfikacji jest używany na serwerze. Na przykład "z drugiej strony" może być terminal Linux, który jest wymagany, aby najpierw wprowadzić zwykłą nazwę wejścia i hasła, musisz uzyskać wiersz poleceń, uruchomić serwer Demon sieciowy. pppd.I dopiero po tym uruchomieniu PPPD na własnej maszynie. Kolejny wariant: pppd. Serwer jest już uruchomiony, a ustawienia "Nazwa użytkownika" i "Hasło" oznaczają informacje identyfikacyjne używanego protokołu CHAP pppd.. Wszystko to i wiele Wvdial jest w stanie odgadnąć, jak również Wvdialconf wiedział, jak określić, które urządzenie jest modemem.

Jednak na każdej sztucznej inteligencji istnieje niezrozumiała sytuacja życia. Na jednym z serwerów (sekcja "Hotspace Dialer Hotspace) również Istnieje program z inkarnacjami sztucznej inteligencji, która również Próbując określić, jaki chcę zidentyfikować to wezwane. Ponieważ te dwa kokpit, podsumowali, wszyscy czekają na kogokolwiek, podczas gdy ktoś nie pokazuje się ... Pomaga konfiguracji Tonline, co powoduje, że Wvdial można natychmiast użyć protokołu PPP, do którego serwera, myślenie "AH, PPP!", Rozpoczyna z ulgą pppd.. Pytanie pozostaje: Dlaczego ten przydatne strojenie nie znajduje odzwierciedlenie w dokumentacji (znalazłem go w źródłowych tekstach programu Gerevich)? Czy to dlatego, że para WvdialConf-Wvdial nie wydaje się robić wszystkiego dla użytkownika, ale stało się, że dokumentacja użytkownika dla deweloperów tego programu nie jest ważna?

Można opracować pomysł ustawień domyślnych. Okazuje się, że jest wygodny, gdy opis konfiguracji nie jest umieszczony w podręczniku, ale bezpośrednio w plik konfiguracyjny. w formie komentarzy. Następnie, gdy zmieniając to ustawienie, użytkownik natychmiast widzi, że reprezentuje, podczas gdy znika potrzebę najpierw znajdź linię w pliku, a następnie szukaj go w instrukcji. Tak powszechny sposób rejestracji jest nazywany samookumentowanie Profil. Na przykład plik /etc/man.conf, zarządzając pracą komendy MAN, jest ozdobione w zmodyfikowanym stylu:

[Chroniony e-mail]: ~ $ Cat /etc/man.conf. . . # Nocoche trzyma człowieka z tworzenia stron pamięci podręcznej ("Cat Pages") # (Ogólnie jeden umożliwia / wyłącz tworzenie strony Cat przez # Tworzenie / Usuwanie katalogu Thewood MKDir) # # NoCache # polecenie "Man -a Xyzyzy" pokaże wszystkim człowiekowi Strony dla Xyzyzy. # Gdy CMP jest zdefiniowany, człowiek spróbuje uniknąć wyświetlania tego samego tekstu tekstu. (Ale skompresowane strony porównują nierówne.) # Cmp / usr / bin / cmp -s. . . Przykład 12.5. Selffumenting plik konfiguracyjny.

Metodej, może nie zrozumiałbym natychmiast, dlaczego polecenie człowieka, aby użyć narzędzia CMP, jednak w komentarzach objaśniających jest napisany: gdy trzeba pokazywać kilka podręczników jednocześnie, są one wcześniej porównane, a tylko niespójne są pokazane.

Jeśli jeszcze dalej, możesz utworzyć kilka różnych plików z przykładami ustawień, aby użytkownik mógł zabrać jeden z nich i doprowadzić do ich stanu. Jest to coś takiego - demonstracja - konfiguracja metodej i włączona jako ustawienia domyślne do Twojego .vimrc (w pierwszej linii). Przy okazji, w rzeczywistości profil VIM jest dość skomplikowany, ale większość jego domyślnych ustawień znajduje się w różnych plikach katalogów / USR / Share / krzepkość. - Schemat kształtu ".d / .d", gdzie pliki profilowe odpowiadające podgrupy ustawień są w podkatalogach odpowiadających grupom. Włączenie konkretnego pliku konfiguracyjnego może wystąpić niejawnie: na przykład linia Kolorcheme Desert z .vimrc prowadzi do czytania / USR / Share / vim / kolory / pustynia. Krzepkość..

Pliki konfiguracyjne. może mieć dość skomplikowaną składnię, jeśli jest zgodne z złożonymi strukturami danych (na przykład, skonfigurowaniem klienta IRRC IRSSI) lub zawiera dodatkowe środki samookumentowanie (Na przykład plik konfiguracji tekstu WWW-Browser WWW-Browser jest nie tylko dobrze udokumentowany, ale także oznaczał te same narzędzia, które są używane w samej przeglądarce do reprezentowania HTML).

Plik konfiguracyjny.

Plik konfiguracyjny.

Plik konfiguracyjny to plik, który opisuje:
- Struktura systemu oprogramowania; i / lub.
- parametry pomocnicze definiujące jego określone ustawienie.
Zwykle plik konfiguracyjny jest zaimplementowany jako plik tekstowy, który jest interpretowany przez system oprogramowania.

Zobacz też: Akta

Słownik finansowy Finams..


Oglądaj, co to jest "plik konfiguracyjny" w innych słownikach:

    plik konfiguracyjny. - plik binarny lub tekstowy zawierający informacje, które określa zachowanie aplikacji, komputera lub urządzenia sieciowego. Networks Network Computing EN Plik konfiguracyjny ... Techniczny katalog translatora

    Lub plik konfiguracyjny służy do przechowywania ustawień programu komputerowego, w tym systemów operacyjnych. Z reguły pliki konfiguracyjne mają format tekstowy i można je odczytywać i edytować przez użytkownika programu. ... ... Wikipedia

    Plik konfiguracyjny lub plik konfiguracyjny służy do przechowywania ustawień programu komputerowego, w tym systemów operacyjnych. Z reguły pliki konfiguracyjne mają format tekstowy i można je odczytywać i edytować ... ... Wikipedia

    Typ System plików, Deweloper Encryption Valient Gough System operacyjny Linux, FreeBSD, Mac OS Ostatnia wersja 1.7.4 (5 września 2010) Licencja G ... Wikipedia

    Strona statystyki serwera ... Wikipedia

    Ten artykuł lub sekcja wymaga recyklingu. Proszę poprawić artykuł zgodnie z przepisami pisania artykułów. Deskryptor ... Wikipedia.

    Produkt BTREVE Software (DBMS), aby zorganizować bazy danych transakcyjnych (lub "nawigacji"). Na podstawie metody organizacji danych ISAM, która zapewnia wysoką prędkość wyszukiwania i ekstrakcji danych. Było kilka wersji ... ... Wikipedia

    Opera Przeglądarka zrzutów ekranu Opera 9.6 Browser Type OpereApe ASA napisane na ... Wikipedia

    Termin ten ma również inne wartości, patrz PHP (wartości). PHP Semantics: Multiparadigre ... Wikipedia

BB RPMOSHN URREULPN BODYFEFHTOP-IBDYYOUNDS RBTBNEFTPCH HUFTSPUFCH PVTBFYFUESS L ZBKMH Notes H FPN TSE LBFBMZA, YUFP I Generic. BTYFEFHTOP OEBCHILIGHTS RBTBNEPLY OBPHDSFUS H / USR / SRC / SYS / CONF / Notes.

dYTEFYCHB to UFBMB DPUFHROPK DMS Yurpmshppchwis H LPBYZCHTBGYPO-ZBKMBBY. RPCHPMSEF CHLMAYUBFSH H FELHEYK LPZHTBGYPOSTEP ZBKM Uptaynpe DTHPZP ZBKKMB, Suszarka do włosów Ubnshchenn Horthpebs Rtpguuu Sheyueyas Oeevpmshyy Yyneyueyak HT Uhweyufchhheyk Zhbkm. OtTetet, EUMY CHBN OPEPVIPDINP DPVBCHYFS CHUZP OLETULULPMSHLP DPMAFEMFEMFEEMSKI Prgyk Ymy DTBCHTPH H SDTP Generic, FP CHBN RTIDADFUS RAPDABYCHBFSH FPMSLP TBEGH L Zhbkmh Generic:

Uwzględnij generic Identyfikator Opcje Mykernel Opcje IPFireWALL Opcje DummyNet IpFirewall_Default_To_accept Opcje IPDivert

vPMShOFFCHP BDNYUYUFTBFTPH PHEOSF ъBYUUFEMFEMCHOSKE URPUPVPN - OBRYUBOYEN LPZHTBGYPOPZP ZBKMB UHHSS \u003e\u003e: ChbmizhtbgyPoshk ZBKM VKHDAF PFPVTBFSBF FPMSLP YENICOYYAYS PFPUIFEMSHOP generycznych. BPUME PVOPCHMEYK YUPDDOPPP LPDB, NDPCPUFUFY ZHHLHHYPOVOSCHOSCHOP, RSSchycheus H rodzajowe, VHDHF DPVBCHMESH Ч ЧЧ Блый ХП ХФ ДП ДХЧТБГА, EMUY FPMSLP OE RTRSFUFCHPHBFSHPNH Dytelfucks Nooptions rr nodevice. DBME HFPN TBIDEME PRIESCHBEFUS FIRPCHPK LPZHTBHTBGEPOSHK ZBKM, OZP PRGYY HUFPKUFCHB, B FBLTER YI TPMY.

rtynyubya:

dMS NOPLY SDTB up Cheny Cpnpshop Prgsny (Pvshuop Yurpmshefus DMFFFTPechs), CHSCHPMEF PF INEAE UPHRPMSHPCHBFS (root) Umvedhaech LFBODH:

# CD / USR / SRC / SY / I386./ Conf && Make Lint

lFP RTTYNET LPZHTBGYPOPPOPPOPSPPOPPOPPOPSK ZBKMB SDTB Ogólny w TBMIOSPY DPRMFMFMFEMSKNY LPNNEFBTYSNY, LPFPTCTP NPZHF RPOBDPVYFSUS DMS SUOPUGI. LFPF RTTYNET DPMTSEO UPGRBDBFS w Chbehak LPRIKK H / USR / SRC / SYS / I386./ Conf / Generic RTBLFYYUELE RPMOPUFSH.

Maszyna I386.

bfp bintifelfelfelf pałeczka. CIS DPMTSOB VSSFS PDOPK YEADKHEY: AMD64, I386, IA64, PC98, PowerPC, YM Sparc64.

CPU I486_CPU CPU I586_CPU CPU I686_CPU

lFB PRGS HLBSCHBEF jodła rtpguuptb, Lpftschk Yurpmshhefus H Chbekek Uyufen. H LPOZHYZHTBGYPOOPN ZHBKME NPTSEF VSCHFSH OEULPMSHLP CHIPTSDEOYK PRGYY FPK (OBRTYNET, EUMY BL OE HCHETEOSCH, LBLPK dv FYRPCH RTPGEUUPTB OEPVIPDYNP YURPMSHPCHBFSH - I586_CPU YMY I686_CPU), PO LCA UPVUFCHEOOPZP SDTB MHYUYE HLBSCHCHBFSH FPMSHLP FPF BJR RTPGEUUPTB, LPFPTSCHK HUFBOPCHMEO H CHBYEK UYUFENE. Eumy Kościół Hetekets, LBPK FIR OPVIPDINP YURPMSHPCHBFSH ChbN, Chist NPSEFE ChPURPMSHPCHBFSHUS ZhBKMPN /var/run/dmesg.boot, Üfpvysch Hatchfsh RTPFPLPM Бабзтхлю уйфенст.

Identyczny ogólny.

lFPF RBTBNEFT PREDDEMSEF NEFLCH \u003e\u003e SDTB. Opepvidinp, UFPVCH UppüchfüchpChbmBBB Combaging LPGKMB LPOZHTBGY SDTB, OTTINET Mykernel. , Emum chrc uftpchbmy yofthlgysn h rt'stshdheia rtynetby. OBYuEOYE, LPFPTPE BL RTYUCHPYFE RBTBNEFTH identyfikacyjny VHDEF CHSCHCHPDYFSHUS H RTPGEUUE BZTHLY, RPFPNH RPMEOP DBCHBFSH OPCHSCHN SDTBN DTHZYE YNEOB FPZP LCA PD YUFPVSCH PFMYYUBFSH YEE PVSCHYUOPZP SDTB (OBRTYNET, EUMY BL IPFYFE UPVTBFSH LURETYNEOFBMSHOPE RAS).

#To Stykyjskie kompilacja w okablowaniu urządzeń INSTAD OF /Boot/device.hints #hints "Generic.hints" # Domyślne miejsca do poszukiwania urządzeń. Opcje Schedu_ule # ULE Scheduler

rMBYTPChel RP Hnpmyuba PE FreeBSD. PUFBCHFF IFK PRGA.

Opcje Preveption # Włącz wynik z nitką jądra

rPCHPMSF CHSHISTILYPEFEFEFETURY OIFSN SDTB CHSCHPheosfsfchteoofph, Obihydayius H Tserin Khschpmois. BFB PRGS NPCCF TBLFYUFSUFS UJFENSKU PPP PFAKAYA LI CHEYYOIN CHPADEKUFCHYSN, OPPETNET, BBB UUFEF OUTCOOKS MBFOFOPUFY OUFEK, PVTBVBFSHCHBEI RTTTTSCHCHUKS.

Opcje Inet # InternetWorking

rapdbyzlb uphonchi chpnpcopouffek. PUFBCHFA OPH PRGA Chlmayuoopk, DBCE Emuy Chist OE RBSTFE RPDLMAYUBFSHUS L UEFY. VPMSHOFCHP RTPZTBNN FTEVHAF, IPFS TBVPFBM IPFS VSHN YOPETEKUK PVTBFOPK Academy (Loopback) (F.e. Upheck Winted Upperaye Chokhft Chchezp RL), FBL YUFP BFB PRGS H RTYOGIRE SCHAMSEFUS PVSBFEMSHOPK.

Opcje ITE6 # Protokoły komunikacyjne IPv6

chlmayubef rpdbetslh ldnnhylbgipoobya IPv6 rtpfplpmpmp.

Opcje FFS # Berkeley Fast System

chlmayubef RPDDezlch Poopchopk ZBBMPC UYUFENZ. OE HDBMSKFE IFH PRGA, Emuy Chist RambithTef Obbztchsbfsus w Zeuflpzp Dyoleb.

Opcje SoftUpdates # Włącz wsparcie Aktualizacje FFS

lFPF RBTBNFFFF CHLMAYUBEF H SDTE FAYOPMPZYA Miękkie aktualizacje, LPFPTBS RPCHESTBEF ULPTPUFSH OBBryuy o dyluly. OEUNPFTS NA FP, YuFP BFB FEOPMPGZISES CHLMAYEOB H SDTHE SCC DMPSOB VSSFSH CHLMAYEOB DMS PFDEXSKETS DYULPH. RTPUNPFFFE Chispd LPNBodshchy Sophpwesch Poddenimivs, Chlmayuz Wesel Miękkie aktualizacje DMS Dyulph Chbeshek Uyufenz. EMUM CHISTER HHIDEF RBTBNEST SOFT aktualizacjami CHBN VKHDEF OPVIPDINP BLFYCHYTPCHBFS HTZP RTY RPNPEY LPNBODCH (DMS ULEUFCHHEI ZBKMPCHSI UYUFEN) YMY LPNBodshchi (DMS i LDC).

Opcje UFS_ACL # obsługa list kontroli dostępu

lFPF RBTBNEFT CHLMAYUBEF H SDTE RPDDEZLCH URREULPCH HORTHBCHMEOEOISE DPUFHRPN (ACL). PupPchChbefus o Yurpmshapey Tbuteopefeshie Bffmshop, Priuboye Chist Unpshee Obkfy H TBDemљ14.12,\u003e. ACL CHLMAYUEOSCH RP HNPMYUBOYA TH OE DPMTSOSCH CHSCHLMAYUBFSHUS B UMHYUBE, EUMY Śpiewaj TBOEE YURPMSHPCHBMYUSH NA ZHBKMPCHPK UYUFENE, FBL LBL FP HDBMYF URYULY HRTBCHMEOYS DPUFHRPN J YNEOYF AF LBL BEYEEOSCH ZHBKMSCH, OERTEDULBHENSCHN PVTBPN.

Opcje UFS_Dirhash # Popraw wydajność na dużych katalogach

bFB PRGS Chlmayubef ZhholGypobmshopufuffShShoph, LPFPTBS RPCHSchybef UlptPufufsh Dyulrchischi Plastggyk na Pvmsyy LBFBMBSBI H PVNEO O YURPMSHBEY DPRPMAFEMSHOPK RBNSFY. DMS VPMShIPZP Utcheb YMY TBVPYEK Ufbogi Telpneeodhefus Pufbchyfs Jej Chlmayuoopk, Chchchchchchchayufsh DMS Uyufensh DMS LPFTPK NME RTYPTFEFOB RBNSFSF Yuen Ulptpuffs DPUFHRB L DYULBHTB, OVDN.

Opcje MD_ROOT # MD to potencjalne urządzenie główne

lFPF RBTBNext Chlmayubef RapdabyZlch YurpmShPChyus DyoultPCH H RBNSFY DMS LPTECT ZBBMPC UYUFENC.

Opcje NFSClient # Network Client Opcje klienta NFSServer # Network Server Server Opcje NFS_ROOT # NFS Użyteczne jak /, wymaga NFSclient

ufhechbs Zhbkmpcbs Uyufenb. Emuy Chister RMBETEFE NPFYTPCHBFPSP TBDEMCH w ZBKMPCPPZP UTuchB UNIX (R) TCP / IP, Chist NPSefa Yulmayufsh BFPF RBTBNext YA LPBBBTBGJPOPPPZP ZBKMB SDTB.

Opcje msdosfs # msdos filesstem

zBCMPCBS UYUFENB MS-DOS (R). Emum Chist Oe UpvitbeFeush NPFytPChbfs SheptnBFTPECTS CH DOS TBIDE CSEUFPZP DYULBH H NPNEOPODOPODOPTHHHLY, Chist Npsefee ProtepRbopup sblpnnefytpchbffff rbtbneft. OpepvipDeschk NPDHMSH VKHDAF BCHPNBfyueli Obbzthzeo, LPDB Chtchchchchchk TB UNPFYThef TBIDEM DOS, FBL, LBP LFP PREUBOP OTSE. LTPNE FPZP, Blefmühchoshoscope RBlef Rpchpmsef RPMKHYUFSHD DPUFHR L DOS Dyulefbn Vej OpepvipDinpufi NpoFightpchBFSH TBNPFTPCHBFSH (TH oe FTEVHEF Obmyius MSDOSFS).

Opcje CD9660 # system plików ISO 9660

zBBMPCBS UYUFENB ISO 9660 DMS LPNRBF Dyulph. eUMY X CHBU RFU RTYCHPDB CDROM YMY BL VHDEFE MYYSH YTEDLB NPOFYTPCHBFSH LPNRBLF-DYULY mieć DBOOSCHNY, BLPNNEOFYTHKFE FH UFTPLH, FBL LBL OEPVIPDYNSCHK NPDHMSH VHDEF BZTHTSEO BCHFPNBFYYUEULY RTY RETCHPN NPOFYTPCHBOYY LPNRBLF-DYULB mieć DBOOSCHNY. DMS Yurpmshpchbuis Chchlppychi LPNRBF-DYULPH LFB ZBKMPC UYUFENB OE RPPPTEMHEFUS.

Opcje PROPFS # PROCESSYSTSYSTSYSTEM (wymaga pseudof)

zBBKMPCBS UYUFENB RTPGEUPCH. LFP ChitfhbmShobs \u003e\u003e Zhbkmpbbs Uyufenb NPFThenbs C / Proc, LPFPTBS RPCHPMSEF FLBTNESSAOYSN, LLB Chistbchbfsh PBN VMShptnbgy P ObbrkheEofybgy RTPGeuubi. YurpmSheptoma ProCfs OE Ftevhefus, FBL LB LvmshoffFPP NPOfthfthnophhfhHphftpspsp BdbrftBop DMS TBVFFFFS ProCfs: Uyufenb RP KHNPMYUBCH UYUFENH RTPGeupch.

Opcje Pseudofs # Pseudo-Filesystem Framework

sDTB, LPFPSKHA Yurpmshhef Procfs, DPDCSP FBLTCE Chlmayubfsh rpdbetslkh pseudofs,

Opcje GEOM_PART_GPT # GUID Stoły Partycji. # PCI Ethernet NICS. Urządzenie DE # DEC / Intel DC21X4X (Tulip \u003e\u003e) Urządzenie EM # Intel Pro / 1000 Adapter Gigabit Ethernet Card Urządzenie IXGB # Intel Pro / 10gbe Ethernet Card Urządzenie TXP # 3COM 3CR990 (Typhoon \u003e\u003e) Urządzenie VX # 3COM 3C590, 3C595 ( Vortex \u003e\u003e)

dBCCHEB Uphonchi LBTF PCI. BLPNNEOFYKFA YMY HDBMYFE DTBKCHB FAI LBTF, LPFPPTESK PUHUFUFUFFAF HB POLEKE UYUFEN.

# PCI NIC Ethernet, które używają wspólnego kodu kontrolera magistrali MII. # Uwaga: Pamiętaj, aby zachować linię "urządzenia MIIBUS", aby użyć tych NIC! Urządzenie MIIBUS # MII wsparcie autobusowe

rapdablb їze-Mii Ftevhefus DMS OFPFPHPHATSHI PCI 10/100 Ethernet LBTF, LPFPTKTKTCHA Yurpmshaf Mii-Superfined Rethed Blue Yyi TEBMIGHAF YOFHECK KHTBCHMEOIS RETBFÜHLPN, LPFPTSCHEF IMIFTCHEF MII. Urządzenie miibus dPVBChMEOYE B LPOZHYZHTBGYPOOSCHK ZHBKM SDTB CHLMAYUBEF RPDDETTSLH UFBODBTFOPZP API miibus J CHUEI DTBKCHETPCH PHY CHLMAYUBS UFBODBTFOSCHK LCA FEI PHY LPFPTSCHE OE PVTBVBFSCHCHBAFUS UREGYZHYYUEULYN PVTBPN LPOLTEFOSCHN DTBKCHETPN.

Urządzenie BFE # Broadcom BCM440X 10/100 Urządzenie Ethernet Bge # Broadcom BCM570XX Gigabit Ethernet Urządzenie DC # Urządzenie FXP # Intel EtherExpress Pro / 100B (82557, 82558) Urządzenie LGE # Poziom 1 LXT1001 Gigabit Ethernet Urządzenie MSK # Marvell / Syskonnect Yukon II Gigabit Ethernet NGE NGE # NATSEMI DP83820 GIGABIT Ethernet Urządzenie PCN # AMD AM79C97x PCI 10/100 (pierwszeństwo nad "LNC") Urządzenie Re # Realtek 8139C + / 8169 / 8169C / 8110S Urządzenie RL # Realtek 8129/8139 Urządzenie SF # Adaptec AIC-6915 ( STARFIRE \u003e\u003e) Urządzenie SIS # SILICON Systemy zintegrowane SIS 900 / SIS 7016 Urządzenie SK # SK-984X\u003e SK-982X GIGABIT Ethernet Urządzenie Ste # Sundance ST201 (D-Link DFE-550TX) Urządzenie Stge # Sundance / Tamarack TC9021 Gigabit Ethernet Urządzenie Ti # Alteon Networks Tigon I / I / II Gigabit Ethernet Urządzenie TL # TEXAS Instruments Thunderlan Urządzenie TX # SMC Etherpower II (83C170 Epic \u003e\u003e) Urządzenie Gigabit Ethernet VR # Via Ren, Device Ethernet WB # Winbond Urządzenie W89C840F. XL # 3COM 3C90X (Boomerang \u003e\u003e, Cyclone \u003e\u003e)

dTBCHEB, LPFPTCHA YURPMSHFAF LPOFTPMMET LUZHezh Mii.

# NIC ISA Ethernet. Zawarte NIC PCCard. Urządzenie CS89X0 NIC # "Urządzenie ED" Wymaga "urządzenia MIIBUS" ED # NE000, SMC Ultra, 3C503, DS8390 Karty Urządzenie EX # Intel Etherexpress Pro / 10 i Pro / 10 + Urządzenie EP # EtherLink III Kartki oparte na kartach FE # Fujitsu MB8696X Urządzenie kart opartych IE # Etherexpress 8/16, 3C507, Starlan 10 itd. Urządzenie LNC # NE2100, NE32-VL Lance Ethernet Card Urządzenie SN # SMC "S 9000 Seria urządzeń frytek Ethernet XE # XirCom PCCard Ethernet # ISA Urządzenia, które korzystają ze starych ISA Shims #Device Le

dBCCHEB UFEFECHSI LBTF ISA. Poobbnshfusu w ZHBCMP / USR / SRC / SY / I386./ Conf / Notes, IFPWSCH KHOBFSH, LBEE U U Ufehekezk LBTFSH LLBLIN DTBCHUPN RAPDABYCHBAFUS.

# Wireless Nic Carty Urządzenie WLAN # 802.11 Obsługa

Wsparcie ogólne 802.11. Ta linia jest wymagana do sieci bezprzewodowej.

Urządzenie WLAN_WEP # 802.11 Urządzenie wsporcze WEP WLAN_CCMP # 802.11 Urządzenie pomocy technicznej CCMP WLAN_TKIP # 802.11 Obsługa TKIP

Obsługa Crypto dla urządzeń 802.11. Linie te są potrzebne, jeśli zamierzasz używać szyfrowania i protokołów bezpieczeństwa 802.11i.

Urządzenie NIC Wireless Wireless.15/4800 802.11. Device Ath # Atheros PCI / Cardbus Nic "S. Ath_hal # Atheros Hal (warstwa dostępu do sprzętu) Urządzenie AH_RATE_SAMPLE # Pobieranie sterowania TX TX Cierping dla Ath Device Asi # Bavestack 660 i Inne Urządzenie Wirus Wavelan / Intsil / Symbol 802.11 NIC. #Device Wl # starszy non 802.11 Wavelan Wireless Nic.

rapdabtzlb TBMIUSTOVABSOBSPTF LBTF.

# Pseudo urządzeń pętla urządzenia # Loopback sieci

uFBODBTHOPA HUFTPKUFCHP PVTBFOPK ACCISICJA DMS TCP / IP. Emum Chist Obbrkhulbefe Telnet YMY FTP RP Pfopeia Localhost (w Que 127.0.0.1), FP Updaeye RTPKDUF Yuete LFP Khufftpcchp. LFPF RBTBNEFT. Pvsbpreme. .

Urządzenie Losowe # Urządzenie Entropy

zetbfpt Umkhukhukovy przez Yuyem DMS LTYRFPZTBZHYEULPK OBABIFSHCH.

Urządzenie Eter # Ethernet Support

ether Opecher Myyshyube, EUMEN XBB EUFS UPHUCHBS LBTFB. Według Chlmayubef Rapdabtzlch UFBODBTFOPP PDB RTPFPLPMB Ethernet.

Urządzenie SL # Slip Kernel Slip

sl - LFP Rapdablb Slip. Slip Village Rtbleyueleuele CHSCHFEUEO PPP, LPFTSCHEM MESUYU Shortbikefus, Mkhyuyi RPDipdym DMS Design Book NPD-NPDPSofufek.

Urządzenie PPP # Kernel PPP

rapdabb PPP H SDTE DMS Designer Dial-up. FBLS Ucheufchef Chetsis PPP, Tebmipchbopzp LLB Rtympseye, Yurpmshaheee Tun, Rittebzbaeey SpMyeyufchp Spnpcofufek, LLB, Opptinet, Uptue Rty Opvipvipfy (Ekjiyuy Pwbeeois L Uefy).

Urządzenie Tun # Tunnel Packet.

yurpmshhefus rpmshpchbfemshulene rtpztbnnow pveoureyueen ppp. PVTBFYFUESS L TBDEM PPP LOISE BBB DBMSHEKS YOZHPTNBGYEK.

Urządzenie Pty # Pseudo-TTYS (Telnett etc)

Ruchedp-fetteObm \u003e\u003e ymy imifeed-cover Rtf DMS Chipdb. Yurpmshhephus Chipdseyine Telnet Th Rlogin -Uyusniy, Rtympatsoien Xterm Oelpftschniy DTKHSEN RTYMPSOYISY, Flendine Lonb Emacs.

Dyski MD # Memory \u003e\u003e

rueleep-KhuftspufufchB Dyoultpch H Rbnsfy.

Urządzenie GIF # Tuneling IPv6 i IPv4

rapdablb FHOMEMITFUCKED IPv6 Yuete IPv4, IPv4 Yuete IPv6, IPv4 Yuete IPv4 I IPv6 Yute IPv6. HUFTSPUFCHP GIF SCSSEFUS. Bcfplpyatkhenshn.\u003e\u003e Y VKHDAF UKDBCHBFS ZBKMSK HUFTPKUFFS RP NETHE OPEPVIPDINS.

Wiara urządzenia # IPv6-to-IPv4 przekaźnik (Tłumaczenie)

lFP RUPRUP-HUFTPKUFCHCHCS IBICHBFSHCPF Rblefsh, Schematy LPFPT RPPHBCH YE RETETIKTBCHMSEF YI DBENPOH FTBUMSY IPv4 / IPv6.

# Urządzenie "BPF" umożliwia filtr pakietowy Berkeley. # Bądź świadomy administracyjnych konsekwencji umożliwiających to! # Należy pamiętać, że "BPF" jest wymagany dla DHCP

zhemshft rblefpch berkeley. LFP Rupep-HUFPKUFChChpp RPCHPMSEF RETOSHPDEFS U UPHONZCHEK YOFHECHECECUCE H Otbangtyuchchku \u003e\u003e (Promiscous) Izzin, H LPFPPTPN Rtechichbfchbefus MAVPK Rblef ChitpchebFemshopk UEFY (Optylenet Ethernet). BFF Rblefshch NPZHF Rusfs-UpitBoo o Dyulya / Ymyi Yumed Adkobs Rty RPNPey.

rtynyubya:

hUFTSPUFCHPP FBLSTBNPK DMS FPZP, UFPVCH RPMHYUFSH BDTEU РП РП хНПМюБАUS Y F.R. Emum Chist Yurpmshefe DCHP, OE HDBMSKFE OBH PRGA.

# Urządzenie wsporcze USB UHCI # UHCI PCI-\u003e Urządzenie interfejsu USB OHCI # OHCI PCI-\u003e Urządzenie interfejsu USB EHCI # EHCI PCI-\u003e Interfejs USB (USB 2.0) Urządzenie USB # USB Bus (wymagane) #Device UDBP # USB Dwuosobowa Rura Urządzenia Urządzenie Urządzenie UGEN UHID UHID # Urządzenia interfejsu ludzkiego\u003e UKBD # Urządzenie klawiatury UHID UKBD # Urządzenie UKBD # Dyski / masowa pamięć - wymaga ScBus i Da Urządzenie UMS # urządzenie Mouse Ural # Ralink Technology RT2500USB Wireless NIC URIO # Diamond Rio 500 MP3 Urządzenie Gracz Uscanner # Skanery # USB Ethernet, wymaga urządzenia MII Urządzenie AUE # ADMTEK USB Ethernet AX # Asix Electronics Urządzenie Ethernet USB CDCE # Generic USB Ethernet Urządzenie CUE # CATC USB Ethernet Urządzenie KUE # Kawasaki LSI USB Ethernet Rue # Realtek RTL8150 USB Ethernet Intel (R) Pentium (R) PRO NME RPCHPSEF YURPMSHPCHBFSHS PP 64 Zyzbvbkf Pretgfychopk rbnsfi. FreeBSD YNEF Rapdabchch LFPC Chpnptcopufy Riput UpTB Prgy SDTB PAE, DPUFHROPK ChP Selui Felhay Chetuyi FreeBSD. Obudowa w PZTBYUYEYASN BTIFFHHTECH Intel, OE Dembefus Oillebpszt Tbmyyuise Neff Rbnsfsfsh Ozsey Yymchschy 4 ZyzbvBKF. Rbnsfsh, Tbneeoobs Couch 4 ZyzbVBKF, RTPUP DPVBCHMSEFUS L DPUFHROP RBNSFY.

dMS FPZP, Juffsch Chlmayufsh Pae H Sdtte, RTPUP DPVBCHF RTTCHEDEOOHOOKH WFTPLH HP LPBYHTBGYPOSHK ZBKM SDTB:

Opcje Pae.

rtynyubya:

rapdablb Pae H FreeBSD UWEUFChFF FPMSLP DMS RTPGeupph Intel (R) IA-32. FBBNTS, UFP PAE H FreeBSD, OE Ludkop RPMPUFSF RTPFEuffftpchbopi DPMCOP Ubiffshus Obihydsaynus H Upufpsumy Velbieoye RP Utdsni, UFBwehhkney ChpnpCofsny FreeBSD.

rapdablb Pae H FreeBSD YNEF Używane PZTBYuyueyas:

    rTPGUUU OE NPCCR RPMHYUFSHD DPUFHR L NEME, Yuen 4 Zyzbvbkfbn RTPputboufhb M VM.

    dTBKETCHSCHU HUFTSPUCH, LPFPTSCHA OE YURPMSHAF YOPETEKUK, RTYCHEDHF L RPCTLETUEYA YOZHPTNBGY H SDTTE w Chlmayuoshchenn Pae. OE TELPNEODHEFUS YURPMSHAPHBFSH Fably DTBKCETS. RP FPK Rtyuyuh H FreeBSD Chlmayuo LpbyzchtbGyPoshk ZBBM SDTB Pae, Yey LPFPPZP HDBMES Chue DTBKetsch, P LPFPTSKI Yuchuufop, Yufp Sount TBVFBAF RTY Chlmayueoopk Rpddezl Pae.

    uyellpptt Sukces Uyufenosh Reather Prodemsaf YurpmStoma Tehumutuch RBNSFI RP LPMYUYUUFHH DPUFHROPK Zhyyyeulpk RBNSFY. Flite Reather Napkhf Rtychufy L Oeookhoph Nutsyutopnh Cvdseoea Rbnsfy Ya-BB Pupvelopeophek TBVPFSH UYUFENCEFENT PAE. Pdyj Fablyy RtynetPCH - Retenteoobs Kern.maxvnodes, LPFPTBS HTBCHMSEF NBLUINBMSSOSCHPN LPMYUYUUFCHPN VNODE, TBEOPH HC SDTE. Telpneeoduhefus Hufbopchyfshi z LFF RPDPVOSE EK RETENTA warzyw châchojo h Blochbuff to bobbyuyas.

    cHPNPCOP, RPOBDPVYFUS HCHECHYUHUFS RTPUFTBOOFCHCHP CHERTFKHBMSHUSHKI BDTEUPCH SDTB (KVA) YMY HNEOFYFSH LBKHA-MYVP Reiseeookh (ONZ DMSI LFPP NPCCF VSFSH YurpmschbobBob PBGS SDTB KVA_PAGES.

h Umkhyube powiedziała Pfopufemshop rtpyChpdifemshopufy I. Ufbvymshopufi telpneeodhefus putbafshus l uphlbuga thlpchpdufbbb. UFFFBUGB THLPCHPDUFCHB USTecky Education Yoźhptnbgy P Rapdabtzle Pae H FreeBsd.

  • Tryb odzyskiwania.

Wprowadzenie

W jakiś sposób jest w poszukiwaniu tego, jak zamocuję pliki konfiguracyjne II lub JSON do mojego serwera przyszedł przez opcje, ale z jakiegoś powodu były niewygodne lub zbyt proste lub rowery. A nawet chociaż kocham konfigurację XML, ale czasami nadmiernie ogromne pliki i niewygodne dla niewielkiej liczby ustawień, aby napisać dużo tekstu. Kiedyś zapytał znajomego na ten temat, rzucił mi bibliotekę. Przypomina JSON w mieszaninie z Yaml.

Biblioteka ma dwa interfejsy: funkcjonalne i obiektowe. Są bardzo podobne, ponieważ obiekt wykorzystuje wewnątrz implementacji funkcjonalnej, ale ma pewne różnice rozważane w tym poście.

Skonfiguruj i połączenie

Biblioteka jest w wielu repozytoriach, więc instalacja jest prosta:
$ sudo aptitude install libconfig8 libconfig8-dev liveconfig ++ libconfig ++ - dev

W źródłach C ++ są podłączone przez:
#Zawierać.
lub
#Zawierać.
Lub dla S.
#Zawierać.

Plik konfiguracyjny.

Plik konfiguracyjny jest następujący typ struktury:
# Przykładowa wersja konfiguracji aplikacji \u003d "1.0"; Zastosowanie: (Okno: (Tytuł \u003d "(! Lang: Moja aplikacja"; size = { w = 640; h = 480; }; pos = { x = 350; y = 250; }; }; list = (("abc", 123, true), 1.234, (/* an empty list */)); books = ({ title = "Wyspa Skarbów."; author = "Robert Louis Stevenson"; price = 29.95; qty = 5; }, { title = "Crash Crash."; author = "Neal Stephenson"; price = 9.99; qty = 8; }); misc: { pi = 3.141592654; bigint = 9223372036854775807L; columns = [ "Last Name", "First Name", "MI" ]; bitmask = 0x1FC3; }; }; !}

Główne typy rekordów w konfiguracji to takie typy:

Element (ustawienie)
Jest to minimalna znaczna część struktury konfiguracji i ma wartość kluczową:
Imię \u003d wartość;
lub
Nazwa: Wartość.
Grupy (grupy)
Grupy mogą zawierać dowolną liczbę elementów, ale każdy element musi zawierać unikalny klucz w ramach grupy. Nagrany w nawiasach kręconych:
(Ustawienia ...)
Tablice (tablice)
Zawierają dowolną liczbę elementów, nawet zero, ale wszystkie elementy składają się tylko z wartości i powinny mieć ten sam typ skalarny w tablicy. Pisze w nawiasach kwadratowych:
[Wartość, wartość ...]]
Listy (listy)
Listy zawierają zero lub więcej elementów typu skalarnego, tablice, grupy lub listy. Nagrane w nawiasach:
(Wartość, wartość ...)
Liczby całkowite (liczby całkowite)
Są one rejestrowane w zwykłej dziewicej metodzie (± 0-9) lub postaci szesnastkowej (0xA-F). Ale wartości liczb całkowitych są ograniczone do zakresu -2147483648..2147483647 (32bit), ale jeśli potrzebne są duże zakresy, na końcu jest potrzebne duże zakresy, "L".
3578934 897893450934l.
Float floats (floats)
Napisane nas zbyt znane
3.1415
Nagrywanie z wykładowym standardem z "E".
Wartości boolean (boolean)
Wartości są zapisywane jako "true" lub "false" i zależne od rejestracji (oczywiście bez cytatów).
Struny (ciągi)
Napisz podwójne cytaty jako "zwykły długi ciąg nagrywany na przykład".
Następujące opcje ostatecznie podają tę samą wartość ciągu:
"Zwykły długi ciąg" "nagrany na przykład"
"Normalny długi ciąg" / * komentarz * / "nagrany" // komentarz "na przykład".
Komentarze
Konfiguracja jest możliwa trzy znajomych w C ++:
  • # Jednorazowa linia do końca linii
  • // również jednolity do końca linii
  • / * ... * / Multiline Comment, w tym transfer rzędów
Połączenia zewnętrzne (obejmuje)
Jest to ogólnie najbardziej smaczny smak.
# Plik: Quote.Cfg Quote \u003d "Krytyka może nie być zgodna, ale jest to konieczne". "Spełnia tę samą funkcję jako ból w ludzkim" "ciele. Należy zwrócić uwagę na niezdrowy stan" "rzeczy." "" T - Winston Churchill ";
# Plik: Test.cfg Informacje: (Nazwa \u003d "Winston Churchill"; @inClude "Quote.cfg" Orkmie \u003d "UK";);

Z API.

W tej części nie pomaluję wszystkich funkcji, tylko główne, ponieważ są one na ogół podobne, a główne niuanse.

Opis używanych funkcji poniżej

#Zawierać. #Zawierać. #Zawierać. / * Ten przykład odczytuje plik konfiguracyjny "example.cfg" i wyświetla swoje elementy * / int Main (int Argc, Char ** Argv) (/ * Typy te są używane. * / Config_t cfg; config_setting_t * ustawienie; const char * str; config_init (& cfg); / * obowiązkowa inicjalizacja * / / * Odczytamy plik. Jeśli błąd, wypełnij operację * / IF (! config_read_file (& cfg "example.cfg") (fprintf (stderr) : "% s:% D -% s", config_error_file (& cfg), config_error_line (& cfg), config_error_text (& cfg)); config_destroy (& cfg); powrót (wyjdź_failure);) / * Szukaj niektórych rodzaj "nazwy". * / If (Config_Lookup_string (& CFG, "Name", i str)) Printf ("Nazwa sklepu:% s", str); Else FPrintf (Stderr, "No" Nazwa " Ustawienie w pliku konfiguracyjnym. N "); / * Wyjście listy książek z półkami * / USTAWIENIA \u003d CONFIG_LOOKUP (& CFG" Inventory.booki "); jeśli (ustawienie! \u003d Null) ); int I; printf ("% - 30s% -30s% -6s% s", "tytuł", "autor", "cena", "Ilość"); dla (i \u003d 0; ja< count; ++i) { config_setting_t *book = config_setting_get_elem(setting, i); /* Выводим только те записи, если они имеют все нужные поля. */ const char *title, *author; double price; int qty; if(!(config_setting_lookup_string(book, "title", &title) && config_setting_lookup_string(book, "author", &author) && config_setting_lookup_float(book, "price", &price) && config_setting_lookup_int(book, "qty", &qty))) continue; printf("%-30s %-30s $%6.2f %3d\n", title, author, price, qty); } putchar("\n"); } /* Вывод всех фильмов с полки. */ setting = config_lookup(&cfg, "inventory.movies"); if(setting != NULL) { unsigned int count = config_setting_length(setting); unsigned int i; printf("%-30s %-10s %-6s %s\n", "TITLE", "MEDIA", "PRICE", "QTY"); for(i = 0; i < count; ++i) { config_setting_t *movie = config_setting_get_elem(setting, i); /* Вывод только тех медиа, у которых заполнены все поля. */ const char *title, *media; double price; int qty; if(!(config_setting_lookup_string(movie, "title", &title) && config_setting_lookup_string(movie, "media", &media) && config_setting_lookup_float(movie, "price", &price) && config_setting_lookup_int(movie, "qty", &qty))) continue; printf("%-30s %-10s $%6.2f %3d\n", title, media, price, qty); } putchar("\n"); } config_destroy(&cfg); /* Освободить память обязательно, если это не конец программы */ return(EXIT_SUCCESS); }

Mały opis funkcji
Pełny opis w dokumentacji.

config_t. - Typ pliku konfiguracyjnego (nie jest to rekord). Mniej więcej mówiąc, główny pojemnik.
config_setting_t. - obiekt elementu konfiguracji. Przykład wykorzystuje wskaźnik zwrócony do pojemnika do żądanego elementu.
int. config_read_file.(config_t * config, const char * nazwa pliku) - Funkcja odczytuje plik konfiguracyjny pliku do pamięci i wypełnia obiekt typu config_t.. Nie możesz odczytywać z pliku, a natychmiast "deszcz" w config_read_string () lub podaj deskryptor plików w Config_read ()
int. config_lookup_string. (Const config_t * config, const char * ścieżka, const char ** wartość) - Wyszukiwania i zwraca wartość w postaci wskaźnika do ciągów wartośćNa określonej ścieżce Ścieżka. Wewnątrz konfiguracji config..
Config_setting_t * config_lookup. (Const Config_t * Config, Const Char * Ścieżka) - Szukasz wpisu wewnątrz konfiguracji na określonej ścieżce wewnętrznej i zwraca go.
Config_setting_t * config_setting_get_elem. (Const Config_setting_t * Ustawienie, niepodpisany indeks INT) - używany do tablic, list, aby zwrócić elementy z takiej liczby w kolejności
int. config_setting_lookup_string. (Const Config_setting_t * Ustawienie, Const Char * Nazwa, Const Char ** Value) -
Zwraca wartość wartość Element córki nazwa. W odniesieniu do danego nagrania oprawa.
Gdy konieczne jest uzyskanie wartości w określonym ustawionym rekordzie, używane są funkcje typu.
int. config_setting_get_int. (Const config_setting_t * ustawienie)

API C ++.

Ten sam przykład, ale na C ++. Pełna dokumentacja na stronie

#Zawierać. #Zawierać. #Zawierać. #Zawierać. Za pomocą przestrzeni nazw STD; Za pomocą przestrzeni nazw libconfig; // Przykład, który odczytuje plik konfiguracyjny "example.cfg" i wyświetla swój rekord wejścia (INT Argc, Char ** Argv) (Config CFG; // Przeczytaj plik. Lub wyjdź z błędu // klasa w C ++ nie ma Zwróć błąd i rzuca wykluczenie próby (CFG.Readfile ("example.cfg");) Catch (Const FileException & Fex) (Std :: Cerr<< "I/O error while reading file." << std::endl; return(EXIT_FAILURE); } catch(const ParseException &pex) { std::cerr << "Parse error at " << pex.getFile() << ":" << pex.getLine() << " - " << pex.getError() << std::endl; return(EXIT_FAILURE); } // Получить некое название. try { string name = cfg.lookup("name"); cout << "Store name: " << name << endl << endl; } catch(const SettingNotFoundException &nfex) { cerr << "No "name" setting in configuration file." << endl; } const Setting& root = cfg.getRoot(); // Найти все книжки на полке. try { const Setting &books = root["inventory"]["books"]; int count = books.getLength(); cout << setw(30) << left << "TITLE" << " " << setw(30) << left << "AUTHOR" << " " << setw(6) << left << "PRICE" << " " << "QTY" << endl; for(int i = 0; i < count; ++i) { const Setting &book = books[i]; // Находим только те записи, что имеют все заполненные поля. string title, author; double price; int qty; if(!(book.lookupValue("title", title) && book.lookupValue("author", author) && book.lookupValue("price", price) && book.lookupValue("qty", qty))) continue; cout << setw(30) << left << title << " " << setw(30) << left << author << " " << "$" << setw(6) << right << price << " " << qty << endl; } cout << endl; } catch(const SettingNotFoundException &nfex) { // Ignore. } // Вывод всех фильмов с полки. try { const Setting &movies = root["inventory"]["movies"]; int count = movies.getLength(); cout << setw(30) << left << "TITLE" << " " << setw(10) << left << "MEDIA" << " " << setw(6) << left << "PRICE" << " " << "QTY" << endl; for(int i = 0; i < count; ++i) { const Setting &movie = movies[i]; // Вывод только тех, что содержат все поля. string title, media; double price; int qty; if(!(movie.lookupValue("title", title) && movie.lookupValue("media", media) && movie.lookupValue("price", price) && movie.lookupValue("qty", qty))) continue; cout << setw(30) << left << title << " " << setw(10) << left << media << " " << "$" << setw(6) << right << price << " " << qty << endl; } cout << endl; } catch(const SettingNotFoundException &nfex) { // Ignore. } return(EXIT_SUCCESS); }
Oto ta sama zasada jak w stylu funkcjonalnym, tylko przed otrzymaniem danych z konfiguracji, konieczne jest uzyskanie elementu korzenia cfg.getroot (); A potem od niego odwrócił się do reszty elementów. Konieczne jest również uważność na fakt, że prawie wszystkie błędy są wyrzucane wyjątki.

Wniosek

Oprócz czytania wygodnych konfiguracji API zapewnia również funkcjonalność tworzenia elementów konfiguracji i napisz go do nośnika.