abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 02:22 | Nová verze

    GNU awk (gawk), implementace specializovaného programovacího jazyka pro zpracování textu, byl vydán ve verzi 5.4.0. Jedná se o větší vydání po více než dvou letech. Mezi četnými změnami figuruje např. MinRX nově jako výchozí implementace pro regulární výrazy.

    |🇵🇸 | Komentářů: 0
    včera 16:22 | IT novinky

    Internetový prohlížeč Ladybird ohlásil tranzici z programovacího jazyka C++ do Rustu. Přechod bude probíhat postupně a nové komponenty budou dočasně koexistovat se stávajícím C++ kódem. Pro urychlení práce bude použita umělá inteligence, při portování první komponenty prohlížeče, JavaScriptového enginu LibJS, bylo během dvou týdnů pomocí nástrojů Claude Code a Codex vygenerováno kolem 25 000 řádků kódu. Nejedná se o čistě autonomní vývoj pomocí agentů.

    NUKE GAZA! 🎆 | Komentářů: 4
    včera 15:55 | Nová verze

    Byl vydán Mozilla Firefox 148.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Nově lze snadno povolit nebo zakázat jednotlivé AI funkce. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 148 bude brzy k dispozici také na Flathubu a Snapcraftu.

    Ladislav Hagara | Komentářů: 2
    včera 12:44 | Nová verze

    Byla vydána nová verze 22.1.0, tj. první stabilní verze z nové řady 22.1.x, překladačové infrastruktury LLVM (Wikipedie). Přehled novinek v poznámkách k vydání: LLVM, Clang, LLD, Extra Clang Tools a Libc++.

    Ladislav Hagara | Komentářů: 0
    včera 12:22 | Humor

    X86CSS je experimentální webový emulátor instrukční sady x86 napsaný výhradně v CSS, tedy bez JavaScriptu nebo dalších dynamických prvků. Stránka 'spouští' assemblerovový program mikroprocesoru 8086 a názorně tak demonstruje, že i prosté CSS může fungovat jako Turingovsky kompletní jazyk. Zdrojový kód projektu je na GitHubu.

    NUKE GAZA! 🎆 | Komentářů: 6
    včera 12:11 | Nová verze

    Po šesti letech byla vydána nová verze 1.3 webového rozhraní ke gitovým repozitářům CGit.

    Ladislav Hagara | Komentářů: 0
    včera 02:33 | Nová verze

    Byla vydána nová verze 6.1 linuxové distribuce Lakka (Wikipedie), jež umožňuje transformovat podporované počítače v herní konzole. Nejnovější Lakka přichází s RetroArchem 1.22.2.

    Ladislav Hagara | Komentářů: 0
    včera 02:11 | Nová verze

    Matematický software GNU Octave byl vydán ve verzi 11.1.0. Podrobnosti v poznámkách k vydání. Vedle menších změn rozhraní jsou jako obvykle zahrnuta také výkonnostní vylepšení a zlepšení kompatibility s Matlabem.

    |🇵🇸 | Komentářů: 1
    23.2. 21:44 | Nová verze

    Weston, referenční implementace kompozitoru pro Wayland, byl vydán ve verzi 15.0.0. Přehled novinek v příspěvku na blogu společnosti Collabora. Vypíchnout lze Lua shell umožňující psát správu oken v jazyce Lua.

    Ladislav Hagara | Komentářů: 0
    23.2. 21:11 | Nová verze

    Organizace Apache Software Foundation (ASF) vydala verzi 29 integrovaného vývojového prostředí a vývojové platformy napsané v Javě NetBeans (Wikipedie). Přehled novinek na GitHubu. Instalovat lze také ze Snapcraftu a Flathubu.

    Ladislav Hagara | Komentářů: 4
    Které desktopové prostředí na Linuxu používáte?
     (18%)
     (6%)
     (0%)
     (11%)
     (27%)
     (2%)
     (5%)
     (1%)
     (12%)
     (26%)
    Celkem 953 hlasů
     Komentářů: 25, poslední 3.2. 19:50
    Rozcestník

    Dotaz: Python otevření | pípy

    28.6.2009 17:36 filbar | skóre: 36 | blog: Denicek_programatora | Ostrava
    Python otevření | pípy
    Přečteno: 656×
    Mám problém s otevřením | pípy v Pythonu:
    os.mkfifo('/tmp/.powerman_fifo');
    self.pipe=os.open('/tmp/.powerman_fifo', os.O_WRONLY|os.O_NONBLOCK);
    
    Když spustím tento kód, tak mi to hlásí:
    Traceback (most recent call last):
      File "/media/JOOMLADEV/eclipse-src/python/PowerMan/src/powermangui.py", line 160, in <module>
        pg=PowerManGui();
      File "/media/JOOMLADEV/eclipse-src/python/PowerMan/src/powermangui.py", line 15, in __init__
        self.pipe=os.open('/tmp/.powerman_fifo', os.O_WRONLY|os.O_NONBLOCK);
    OSError: [Errno 6] No such device or address: '/tmp/.powerman_fifo'
    
    Přitom ta pipe existuje:
    ls -al /tmp/.powerman_fifo 
    prw-r--r-- 1 bartmann bartmann 0 2009-06-28 17:33 /tmp/.powerman_fifo
    

    Nevíte kde dělám chybu?

    Za rady předem děkuji.

    Odpovědi

    28.6.2009 18:31 12345 | skóre: 41 | blog:
    Rozbalit Rozbalit vše Re: Python otevření | pípy

    man 7 fifo říká tohle:

    A process can open a FIFO in non-blocking mode. In this case, opening for read only will succeed even if no-one has opened on the write side yet; opening for write only will fail with ENXIO (no such device or address) unless the other end has already been opened.

    OSError 6 je opravdu ENXIO:

    >>> import errno
    >>> errno.ENXIO
    6
    
    29.6.2009 08:03 filbar | skóre: 36 | blog: Denicek_programatora | Ostrava
    Rozbalit Rozbalit vše Re: Python otevření | pípy
    Tak jsem o kousek pokročil:
    self.state=os.read(self.pipe, 1000);
    OSError: [Errno 11] Resource temporarily unavailable
    

    Přitom na mám rouru v rodiči otevřenou a v dokumentaci jsem vyčetl, že při čtení z neblokující roury má vrátit 0 bytů.

    Postupuju, tak že si nejprve vytvořím instanci třídy PowerMan, v jejímž konstruktoru otvírám PIPU pro čteční, následně otevírám rouru pro zápis, volám fork() a v potomkovi volám metodu PowerMan.run, kde ve while 1: z roury čtu:

    if os.path.exists('/tmp/.powerman_fifo')==False:
    			os.mkfifo('/tmp/.powerman_fifo');
    		pm=powerman.PowerMan();
    		self.pipe=os.open('/tmp/.powerman_fifo', os.O_WRONLY|os.O_NONBLOCK);
    		self.state=True;
    		pid=os.fork();
    		if pid==0:
    			pm.run();
    
    Metoda run() třídy PowerMan:
    def run(self):
    		while 1:
    			self.state=os.read(self.pipe, 1000);
    			print self.state;
                            #Zpracovat obsah PIPE
    			if self.quit==True:
    				break;
    			if self.state==True:
    				self.get_idle();
    				self.get_idle_workaround();
    				if int(self.idle)>=int(self.stime):
    					pid=os.fork();
    					if pid==0:
    						self.idle=0;
    						os.execl(self.prog);
    					else:
    						os.wait();
    			time.sleep(1);
    
    29.6.2009 10:37 12345 | skóre: 41 | blog:
    Rozbalit Rozbalit vše Re: Python otevření | pípy

    Jestli jde jen o komunikaci rodičovského procesu s potomkem, není k tomu potřeba named pipe. Taková jednoduchá jednosměrná komunikace:

    import fcntl, os, time
    
    (rd, wr) = os.pipe()
    
    if os.fork() == 0:
    	os.close(wr)
    	fcntl.fcntl(rd, fcntl.F_SETFL, os.O_NONBLOCK)
    	print 'child: waiting for input'
    	while True:
    		try:
    			data = os.read(rd, 1000)
    			if data:
    				print 'child: received:', data
    		except OSError:
    			pass
    else:
    	os.close(rd)
    	while True:
    		data = raw_input('parent:> ')
    		os.write(wr, data)
    		time.sleep(.3) # aby se nesleval vystup potomka s rodicem
    

    Ukázka:

    $ python pipe.py
    child: waiting for input
    parent:> hello
    child: received: hello
    parent:> how are you?
    child: received: how are you?
    parent:>                         
    

    OSError 11 je v pořádku, je to obyčejné EAGAIN/EWOULDBLOCK (viz www.gnu.org/s/libc/manual/html_node/Error-Codes.html#index-EAGAIN-97).

    18.1.2010 16:16 Marcel
    Rozbalit Rozbalit vše Python
    Zdravím pánové, již je sice pozdě a asi nebudu přímo k věci, ale chtěl bych zde uvést svůj web pro další návštěvníky, kde jsem rozebíral základy této problematiky.

    Na webu http://networks.ic.cz průběžně aktualizuji věci které se týkají programování a webu a v sekci Python rozebírám jednotlivé moduly. Takže se kdyžtak mrkněte

    Modul subproces

    Modul fcntl

    Založit nové vláknoNahoru

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

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.