Portál AbcLinuxu, 10. května 2025 06:04

Dotaz: Roury

12.5.2005 08:40 alexxx
Roury
Přečteno: 165×
Odpovědět | Admin
Neznate nekdo nejakej link, kde by byly informace o rourach v linuxu, jak je vytvorit, jak je pouzit pro mezi procesy. Nebo nejakou cast kodu v C. Potreboval bych to ke zkousce, nerad bych na tom vyletel. Dik moc
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

12.5.2005 08:44 zabza | skóre: 52 | blog: Nad_sklenkou_cerveneho
Rozbalit Rozbalit vše Re: Roury
Odpovědět | | Sbalit | Link | Blokovat | Admin
Co se týká glibc ...
12.5.2005 09:02 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Re: Roury
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nie je rura ako rura ;-)

Najtrivialnejsi priklad na ktorom sa to da pochopit vyzera zvycajne takto: napises program, ktory

  1. urobi ruru (volanie runtime kniznice pipe())
  2. urobi fork() - OS zabezpeci, ze oba detske procesy maju filedeskriptory ulozene v premennej kam sa priradil vysledok z pipe() namierene na tu istu ruru.
  3. jeden z procesov zavrie file deskriptor 0 (stdin)
  4. ten isty proces urobi dup() na jeden z deskriptorov vyrobenych v pipe(). Tym dosiahne, ze sa pouzije prvy volny file deskriptor - 0 uvolneny v kroku 3. a tym vlastne bude komunikovat s rurou.
  5. druhy z procesov zavrie file dskriptor 1 (stdout)
  6. tento proces, urobi dup() na druhy z deskriptorov vyrobenych v pipe() a tym dosiahne, ze jeho stdout bude zodpovedat druhemu koncu rury.
  7. voila - o viac sa programy nestaraju, co druhy zapise na stdout prvy moze precitat zo stdin.
Detaily ako, ktory file deskriptor z pipe() je na zapis/citanie si najdi - aby si to nemal celkom zadarmo ;-)

Druhy typ rur su pomenovane rury - na filesysteme. Vyrabane pomocu mknod(). Taku ruru si urobis raz-dva: mknod /tmp/mojarura p A komunikacia je opat jednoducha, jeden proces otvori /tmp/mojarura na zapis a druhy na citanie - presne tak isto ako obycajny subor. (Tento postup funguje takmer identicky aj na MS Win - tusim CreateNamedPipe() sa to tam vola.)

Taky je plan. Ked to vlastnorucne napises a rozbehas, mas to vo vrecku.

12.5.2005 11:23 Michal Kubeček
Rozbalit Rozbalit vše Re: Roury
Odpovědět | | Sbalit | Link | Blokovat | Admin
Info dokumentace ke glibc, máte tam i příklady.

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.