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 13:22 | IT novinky

    Na Kickstarteru běží kampaň na podporu malého robotický psa Petoi Quaddle. Postaven je na ESP32-S3. V několika variantách. S řadou senzorů. Programovat lze pomocí Pythonu, C++ nebo i vizuálních bloků. Zkoušet a trénovat lze v simulátoru.

    Ladislav Hagara | Komentářů: 1
    včera 22:11 | Pozvánky

    Dětem začala škola a nedobrovolně se tak musí vzdělávat. Avšak pro dospělé, kteří se chtějí vzdělávat nebo naopak se o vědomosti podělit, je tu Virtuální Bastlírna - jako každý měsíc si můžete online a zdarma nezávazně popovídat o vědě a technice nejen s bastlíři, ale i s vývojáři, vědci nebo profesory. A čemu se strahováci budou věnovat? Blíží se KiCAD 11 s nespočtem novinek, z nichž zde musí zmínit alespoň možnost kótování a závislostí z

    … více »
    bkralik | Komentářů: 1
    včera 19:33 | Komunita

    Asahi Linux, tj. Linux pro Apple Silicon, oficiálně podporuje čipy M3 (M3, M3 Pro a M3 Max).

    Ladislav Hagara | Komentářů: 4
    včera 15:44 | IT novinky Ladislav Hagara | Komentářů: 0
    včera 15:00 | IT novinky

    Server SiFive BigSky SF-2U870 2U je založený na jádře SiFive P870-D, zatím je naintegrovaných 32 jader 256 GB RAM 2 GHz, škálovat lze do 256 jader na čip. O něco podrobnější popis serveru v článku SiFive BigSky Ships the First RISC-V Server. Is the GPU Head Node the Prize? na futurumgroup.com. Asi ani tento čip nebude na úrovni nejlepších 64-bit ARMů a AMD Zenů, ale splňuje RVA23 specifikaci a je podporovaný Ubuntu 26.04 LTS a RHEL 10. V článku je

    … více »
    Pavel Píša | Komentářů: 1
    včera 00:11 | IT novinky

    Na YouTube lze zhlédnout nový celovečerní dokumentární film The Story of VS Code | Official Documentary věnovaný Visual Studio Code.

    Ladislav Hagara | Komentářů: 19
    4.9. 23:49 | Zajímavý článek

    Farid Abdelnour se v příspěvku na blogu rozepsal o novinkám v nejnovější verzi 26.08.0 editoru videa Kdenlive (Wikipedie). Ke stažení také na Flathubu.

    Ladislav Hagara | Komentářů: 1
    4.9. 17:33 | Zajímavý článek

    Bylo vydáno nové číslo hackerského magazínu tmp.0ut: Volume 5.

    Ladislav Hagara | Komentářů: 0
    4.9. 01:44 | Nová verze

    Byla vydána nová stabilní verze 8.2 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 152. Přehled novinek i s náhledy v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    3.9. 23:11 | Nová verze

    Byla vydána nová stabilní verze 4.0 svobodného multiplatformního softwaru pro editování a nahrávání zvukových souborů Audacity (Wikipedie). S rozhraním přepsaným do Qt. Přehled novinek také na YouTube. Ke stažení je oficiální AppImage. Zatím starší verze Audacity lze instalovat také z Flathubu a Snapcraftu.

    Ladislav Hagara | Komentářů: 2
    Které desktopové prostředí na Linuxu používáte?
     (10%)
     (7%)
     (4%)
     (20%)
     (29%)
     (7%)
     (5%)
     (2%)
     (14%)
     (21%)
    Celkem 2603 hlasů
     Komentářů: 31, poslední 13.8. 00:27
    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: 841×
    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.