Portál AbcLinuxu, 12. května 2025 05:47

Dotaz: knihovni funkce VS systemova volani

24.7.2005 22:04 qwerty | skóre: 9
knihovni funkce VS systemova volani
Přečteno: 86×
Odpovědět | Admin
Dobry den,

zajimalo by me jak velky je rozdil kdyz ve svem programu volam systemove volani nebo knihovni funkci. Napriklad systemove volani write() a standartni C funkce printf. Pokud volam v C programu primo write(1,"xxx",3) tak se zavola systemove volani write(1,"xxx",3xxx) a pokud pouziju printf("xxx") tak se taky zavola stejne systemove volani write(1,"xxx",3xxx), (coz mi prijde i logicke protoze v jiste fazi ten proces stejne bude muset pristupovat k necemu co ovlada OS coz udela pres to sys. volani). Nekde jsem ale cetl ze pokud volam primo systemove volani tak beh prevezme jadro coz stoji urcitou rezii kdezto kdyz volam knihovni fci tak se vsechno provede v uzivatelskem rezimu coz ale nechapu kdyz i ta knihovni funkce stejne nakonec vola to systemove volani.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

24.7.2005 22:08 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: knihovni funkce VS systemova volani
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zrovna v případě zápisu do souboru jsou streamové funkce efektivnější proto, že na rozdíl od systémových volání výstup bufferují. Samozřejmě to ale znamená, že chcete-li, aby se data zapsala okamžitě, musíte zavolat fflush().
25.7.2005 10:03 podlesh | skóre: 38 | Freiburg im Breisgau
Rozbalit Rozbalit vše Re: knihovni funkce VS systemova volani
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jak zde již padlo: fwrite/fread dělají trochu více, než že jen volají write/read . Zapisovaný/čtený obsah bufferují, takže vlastně volání fwrite/fread nemusí nutně provést write/read. Pokud se čte po jednom byte, tak vlastně ve většině případů jen sáhnou do bufferu a vrátí se.

Naopak, pokud se zapusují/čtou velké bloky dat, je efektivnější rovnou volat write/read (buffer je zcela zbytečný a spíše zdržuje).

Dobré pravidlo však zní: pokud možno nemíchat oba dva způsoby dohromady.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.