Portál AbcLinuxu, 14. května 2025 00:07

Dotaz: spuštění procesu z pythonu

22.8.2012 20:04 Raada | skóre: 4
spuštění procesu z pythonu
Přečteno: 486×
Odpovědět | Admin
Ahoj, Používám usb modem, ke kterému bych se chtěl připojit z pythonovského scriptu.
#!/usr/bin/env python
import subprocess

ConnectString="/usr/sbin/pppd /dev/ttyACM0 user ufon password ufon updetach defaultroute usepeerdns connect \"/usr/sbin/chat ABORT BUSY ABORT 'NO CARRIER' '' ATZ OK ATD#777 CONNECT\""

proc = subprocess.call(ConnectString, shell=True)#, stdout=subprocess.PIPE)
Když napíšu řetězec zde uložený v ConnectString do bashe, vše funguje. Z pythonu to nefunguje(ani když daný scriptík ještě neskončil). Proč? A jak to udělat, aby takto spuštěný proces byl potom nezávislý na původním pythonovském scriptíku, ze kterého byl spuštěn? Dík. R

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

24.8.2012 09:56 Jary | skóre: 30 | blog: Jary má blog | Dům
Rozbalit Rozbalit vše Re: spuštění procesu z pythonu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Co to znamená nefunguje? Chceš z toho pppd udělat démona -- tedy aby přežil smrt svého předka?
.sig virus 3.2_cz: Prosím, okopírujte tento text do vaší patičky. GitHub
24.8.2012 11:03 Raada | skóre: 4
Rozbalit Rozbalit vše Re: spuštění procesu z pythonu
Asi jsem smichal trochu hrušky s jablkama. Pro tuto chvíli bych opustil problém nesmrtelnosti procesu po ukončení pythonovského prográmku(to s pppd v zásadě nesouvisí) a soustředil se na funkčnost. Prostě, když zmíněný řetězec napíšu do bashe, modem se připojí a můžu surfovat. Když to zkusím spustit z pythonu, modem se nepřipojí a surfovat nemůžu:-(. Pokud to zkusím spustit z bashe a modem není v usb, dostanu chybovou hlášku. Pokud to spustím z pythonu a modem není v usb, dostanu úplně stejnou hlášku, takže samotný řetězec je snad opsán dostatečnš dobře.
rADOn avatar 24.8.2012 12:25 rADOn | skóre: 44 | blog: bloK | Praha
Rozbalit Rozbalit vše Re: spuštění procesu z pythonu
Jestli tam je nějaká chyba tak nepadá na stdout ale na stderr.
"2^24 comments ought to be enough for anyone" -- CmdrTaco
24.8.2012 14:39 Jary | skóre: 30 | blog: Jary má blog | Dům
Rozbalit Rozbalit vše Re: spuštění procesu z pythonu

navíc

Note Do not use stdout=PIPE or stderr=PIPE with this function. As the pipes are not being read in the current process, the child process may block if it generates enough output to a pipe to fill up the OS pipe buffer.
http://docs.python.org/library/subprocess.html#subprocess.call
.sig virus 3.2_cz: Prosím, okopírujte tento text do vaší patičky. GitHub
24.8.2012 19:36 Raada | skóre: 4
Rozbalit Rozbalit vše Re: spuštění procesu z pythonu
> Jary: stdout= .... je zakomentovaný
24.8.2012 19:34 Raada | skóre: 4
Rozbalit Rozbalit vše Re: spuštění procesu z pythonu
stdout i stderr je nasměrovaný do konzolového okna, ne?
24.8.2012 19:40 l4m4
Rozbalit Rozbalit vše Re: spuštění procesu z pythonu
Když to neměníš argumenty funkce, tak ano (resp. kamkoli, kam jde stdout a stderr rodičovského procesu).
25.8.2012 23:33 Radovan Garabík
Rozbalit Rozbalit vše Re: spuštění procesu z pythonu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Aku mas verziu pppd? A funguje ten prikaz, aj ked ho napises do #!/bin/sh scriptu, alebo len z prikazoveho riadku?

Nedavno som na nieco podobne narazil, len neslo o python - 2.4.5 fungoval vylucne z prikazoveho riadku, zo scriptu nie. Musel som downgradovat na 2.4.4.

(pricina)
27.8.2012 13:31 Raada | skóre: 4
Rozbalit Rozbalit vše Re: spuštění procesu z pythonu
Dík doma na to mrknu a poreferuji o výsledku. R
Řešení 1× (Raada (tazatel))
29.8.2012 09:36 Raada | skóre: 4
Rozbalit Rozbalit vše Re: spuštění procesu z pythonu
Tak to vypadá, že je to verzí pppd. Mám 2.4.5 a nefunguje to ani z bash scriptu. Zkusím teda downgradeovat. R

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.