Firma Proxmox vydala novou serverovou distribuci Datacenter Manager ve verzi 1.0 (poznámky k vydání). Podobně jako Virtual Environment, Mail Gateway či Backup Server je založená na Debianu, k němuž přidává integraci ZFS, webové administrační rozhraní a další. Datacenter Manager je určený ke správě instalací právě ostatních distribucí Proxmox.
Byla vydána nová verze 2.4.66 svobodného multiplatformního webového serveru Apache (httpd). Řešeno je mimo jiné 5 bezpečnostních chyb.
Programovací jazyk JavaScript (Wikipedie) dnes slaví 30 let od svého oficiálního představení 4. prosince 1995.
Byly zveřejněny informace o kritické zranitelnosti CVE-2025-55182 s CVSS 10.0 v React Server Components. Zranitelnost je opravena v Reactu 19.0.1, 19.1.2 a 19.2.1.
Bylo rozhodnuto, že nejnovější Linux 6.18 je jádrem s prodlouženou upstream podporou (LTS). Ta je aktuálně plánována do prosince 2027. LTS jader je aktuálně šest: 5.10, 5.15, 6.1, 6.6, 6.12 a 6.18.
Byla vydána nová stabilní verze 3.23.0, tj. první z nové řady 3.23, minimalistické linuxové distribuce zaměřené na bezpečnost Alpine Linux (Wikipedie) postavené na standardní knihovně jazyka C musl libc a BusyBoxu. Přehled novinek v poznámkách k vydání.
Byla vydána verze 6.0 webového aplikačního frameworku napsaného v Pythonu Django (Wikipedie). Přehled novinek v poznámkách k vydání.
Po více než 7 měsících vývoje od vydání verze 6.8 byla vydána nová verze 6.9 svobodného open source redakčního systému WordPress. Kódové jméno Gene bylo vybráno na počest amerického jazzového klavíristy Gene Harrise (Ray Brown Trio - Summertime).
Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za listopad (YouTube).
Google Chrome 143 byl prohlášen za stabilní. Nejnovější stabilní verze 143.0.7499.40 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Opraveno bylo 13 bezpečnostních chyb.
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.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
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);
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).
Tiskni
Sdílej: