Spuštění jiného procesu - Linux – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Spuštění jiného procesu - Linux – C / C++ – Fórum – Programujte.comSpuštění jiného procesu - Linux – C / C++ – Fórum – Programujte.com

 

dr
~ Anonymní uživatel
4 příspěvky
9. 3. 2009   #1
-
0
-

Zdravím,
dělám pod Linuxem v C++ TCP/IP server a momentálně se snažím vyřešit nějakým stylem update. Přesněji zkouším "self-update". Klientem pošlu na server příkaz k updatu. Ten se pak podívá na FTP a zjístí, zda je nová verze. Pokud ano, tak stáhne tar archív. Teď jsem to chtěl řešit tak, že spustím bash skript, ukončím server (skript ověří, zda je server ukončen), rozbalím a spustím server. Problém je ve spuštění skriptu. Zkoušel jsem system(), popen() i exec..(), dostal jsem se na místo, kdy proces serveru zmizí z ps ax, ale pořád naslouchá na portu. To pak způsobí chybu při znovuspuštění serveru skriptem - následně po skončení tohoto update procesu už na portu nic nenaslouchá. Máte nějaké návhy, doporučení k tomu? Předem díky.

Nahlásit jako SPAM
IP: 79.98.159.–
KIIV
~ Moderátor
+43
God of flame
9. 3. 2009   #2
-
0
-

To dr : mozna uzavirat spojeni... ale jen hadam...

Nahlásit jako SPAM
IP: 80.250.1.–
Program vždy dělá to co naprogramujete, ne to co chcete...
dr
~ Anonymní uživatel
4 příspěvky
10. 3. 2009   #3
-
0
-

To KIIV : Zkusil jsem i hlavní socket uzavřít přes close(), ale bez výsledku.

Nahlásit jako SPAM
IP: 79.98.159.–
KIIV
~ Moderátor
+43
God of flame
10. 3. 2009   #4
-
0
-

To dr : mam pocit ze musis uzavirat i kazde spojeni...

Nahlásit jako SPAM
IP: 80.188.94.–
Program vždy dělá to co naprogramujete, ne to co chcete...
dr
~ Anonymní uživatel
4 příspěvky
10. 3. 2009   #5
-
0
-

To KIIV : Každé spojení s klientem uzavírám, momentálně se mi podařilo uzavřít i naslouchací socket. Problém zůstává v tom, že když něco spustim přes system (přidám do příkazu &), tak se proces zcela neukončí. Potřebuji nějakým stylem spustit jiný proces tak, aby se můj zcela ukončil.

Nahlásit jako SPAM
IP: 79.98.159.–
bukaj_0010
Věrný člen
10. 3. 2009   #6
-
0
-

dr
Jestli jsem to pochopil správně, tak server stáhne archiv, spustí skript; skript zabije server, rozbalí archiv a znovu spustí server:

+-----------+------------+------------+

| KLIENT | SERVER | SKRIPT |
+-----------+------------+------------+
| --------> | xxxxxxxxxx |
| update | xxxxxxxxxx |
+-----------+------------+------------+
| | stáhne | xxxxxxxxxx |
| | archiv | xxxxxxxxxx |
+-----------+------------+------------+
| | -----------> |
| | spustí |
+-----------+------------+------------+
| | <----------- |
| | zabije |
+-----------+------------+------------+
| | xxxxxxxxxx | rozbalí |
| | xxxxxxxxxx | archiv |
+-----------+------------+------------+
| | <----------- |
| | spustí |
+-----------+------------+------------+
| <--------- | xxxxxxxxxx |
| odpoví | xxxxxxxxxx |
+-----------+------------+------------+

Je to tak?

A co takhle:
+-----------+------------+------------------+

| KLIENT | SERVER | FORK SERVERU |
+-----------+------------+------------------+
| --------> | xxxxxxxxxxxxxxxx |
| update | xxxxxxxxxxxxxxxx |
+-----------+------------+------------------+
| | stáhne | xxxxxxxxxxxxxxxx |
| | archiv | xxxxxxxxxxxxxxxx |
+-----------+------------+------------------+
| | -----------> |
| | fork() |
+-----------+------------+------------------+
| | wait() | exec("tar -xzf |
| | | archiv.tar.gz") |
+-----------+------------+------------------+
| <--------- | xxxxxxxxxxxxxxxx |
| odpoví | xxxxxxxxxxxxxxxx |
+-----------+------------+------------------+

Pokud je ve spouštěcí rutině serveru nějaký kód, který načítá obsah složky, bude potřeba tento kód oddělit a poté, co skončí potomek, kód znovu zavolat.

Nahlásit jako SPAM
IP: 88.101.128.–
Jak se správně ptát? -> http://www.hash.cz/inferno/otazky.html[br][br] Po programování je člověk hladovej.
joe
~ Anonymní uživatel
62 příspěvků
10. 3. 2009   #7
-
0
-

setsockopt SO_REUSEADDR

Nahlásit jako SPAM
IP: 213.211.51.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 9 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý