Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

ShellExecute pod Linuxom?(C++)

[es] :: C/C++ programiranje :: ShellExecute pod Linuxom?(C++)

[ Pregleda: 3811 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Mirko Rajkovača
Subotica

Član broj: 18458
Poruke: 119
*.ns.ac.yu.



Profil

icon ShellExecute pod Linuxom?(C++)19.10.2006. u 13:23 - pre 181 meseci
koja c++ funkcija pod linuksom je ekvivalent shellExecute pod windowsom? Znaci da jednostavno startuje program, a ne da kreira child proces
Razlika izmedju softvera i hardvera je:
Softver je nesto sto mozes psovati, a hardver je... pa hardver je nesto sto mozes sutati
 
Odgovor na temu

Buffy
Stanko Culaja
Sipovo, BiH

Član broj: 45310
Poruke: 312
*.teol.net.



Profil

icon Re: ShellExecute pod Linuxom?(C++)19.10.2006. u 13:44 - pre 181 meseci
mozes pomocu system funkcije:
Code:

#include <stdlib.h>

...

system("program &"); //obrati paznju na "&". kad uneses ovaj znak tred is kojeg si pozvao system funkciju nece biti blokiran.
...

dakle obavezno stavi &.
ima i drugih nacina za pokretanje programa, ali ovo ti je dovoljno ;)
pozdrav!
 
Odgovor na temu

Mirko Rajkovača
Subotica

Član broj: 18458
Poruke: 119
*.ns.ac.yu.



Profil

icon Re: ShellExecute pod Linuxom?(C++)23.10.2006. u 11:20 - pre 181 meseci
To je to, radi!

Tnx
Razlika izmedju softvera i hardvera je:
Softver je nesto sto mozes psovati, a hardver je... pa hardver je nesto sto mozes sutati
 
Odgovor na temu

cynique
Ivan Štambuk
[email protected]

Član broj: 93690
Poruke: 155
193.198.17.*

ICQ: 106979934
Sajt: istambuk.blogspot.com


Profil

icon Re: ShellExecute pod Linuxom?(C++)23.10.2006. u 12:22 - pre 181 meseci
Za finiju kontrolu, pogledaj exec* familiju fja:

http://www.opengroup.org/onlinepubs/009695399/functions/exec.html
 
Odgovor na temu

EArthquake

Član broj: 20684
Poruke: 884
194.106.187.*



+67 Profil

icon Re: ShellExecute pod Linuxom?(C++)10.11.2006. u 16:38 - pre 180 meseci
samo da napomenem


postoji sigurnosni problem kod system() funkcije

naime , ona se oslanja na varijable okruzenja pri pokretanju programa , tacnije na $PATH varijablu po kojoj trazi program koji treba da pokrene

tako da , osim ako ne stavljas fulll path do programa, neko moze da se poigra i da natera tvoj program da radi nesto drugo ,

to i nije veliki problem , osim ako tvoj program nije suid , onda omogucava pokretanje bilo kog drugog programa sa visi privilegijama , a to je vec ozbilja n sigurnosni propust


mozda nebitno , al reko da napomenem, ne moz` da skodi :)


pozdrav
Aca


 
Odgovor na temu

Mirko Rajkovača
Subotica

Član broj: 18458
Poruke: 119
82.131.178.*



Profil

icon Re: ShellExecute pod Linuxom?(C++)11.11.2006. u 15:16 - pre 180 meseci
sada imam drugi problem, radi ovo sa system ali je problem sto se novi proces i dalje tretira kao child od pocetnog procesa, tj. prvobitan program nece da se zavrsi dok se program pokrenut sa "system" ne zavrsi a to mi nikako ne odgovara...
Tacna situacija je ovakva: imam broker program koji komunicira sa server aplikacijom, ako server nije startovan broker startuje server komunicira sa njim i zatvara se dok server ostaje aktivan i ceka narednog brokera

Jednostavno mi treba zamena za ShellExecute pod Windowsom pogledao sam svugde ali nisam nasao, svaka ideja je dobro dosla...
Hvala unapred
Razlika izmedju softvera i hardvera je:
Softver je nesto sto mozes psovati, a hardver je... pa hardver je nesto sto mozes sutati
 
Odgovor na temu

Buffy
Stanko Culaja
Sipovo, BiH

Član broj: 45310
Poruke: 312
*.teol.net.



Profil

icon Re: ShellExecute pod Linuxom?(C++)11.11.2006. u 15:42 - pre 180 meseci
moze li exec?

 
Odgovor na temu

mulaz
Ljubljana

Član broj: 47602
Poruke: 2239
*.dial-up.dsl.siol.net.

Jabber: mulaz@elitesecurity.org
Sajt: www.mulaz.org


+184 Profil

icon Re: ShellExecute pod Linuxom?(C++)11.11.2006. u 16:10 - pre 180 meseci
dali exec i system vracaju output programa?
mislim da je funkcija system tipa int, i da vraca samo 0 ako je program uspesno odradio ili nesto ako nije
jel moguce piokupiti izlaz programa? mislim.. ako exece pokrene komandu ls, da bi pokupio listu foldera/fajlova?
Bolje ispasti glup nego iz aviona
http://www.mulaz.org/
 
Odgovor na temu

EArthquake

Član broj: 20684
Poruke: 884
194.106.187.*



+67 Profil

icon Re: ShellExecute pod Linuxom?(C++)12.11.2006. u 21:43 - pre 180 meseci
ne , exec familija funkcija pokrece program , ne mozes da uzmes njegov output, on se ponasa kao da nije child ,

znaci ls samo ispisuje sve na stdout
 
Odgovor na temu

Mirko Rajkovača
Subotica

Član broj: 18458
Poruke: 119
82.131.178.*



Profil

icon Re: ShellExecute pod Linuxom?(C++)13.11.2006. u 23:29 - pre 180 meseci
Ja mozda ne razumem ali u manualu za exec familiju funkcija lepo i jasno pise da stvara proces koji zamenjuje tekuci proces ili tako nesto, znaci ne izvrsava samo prosto startovanje programa. Ili ja lose razumem ili to nije to(verovatno je ovo prvo )

Ako vam nije problem dajte mi jedan primer, znaci jednostavno startovanje aplikacije, njena dalja kontrola mi nije bitna a komunikacija se odvija preko pipe-ova

Hvala
Razlika izmedju softvera i hardvera je:
Softver je nesto sto mozes psovati, a hardver je... pa hardver je nesto sto mozes sutati
 
Odgovor na temu

mbabuskov
Milan Babuškov
Subotica

Član broj: 4718
Poruke: 217
82.131.178.*

Sajt: www.comp.rs/izradasajta


+6 Profil

icon Re: ShellExecute pod Linuxom?(C++)02.02.2007. u 21:11 - pre 178 meseci
Za kupljenje izlaza (stdout) programa najlakse je koristiti popen(3) pa onda sa fgets(3) ili fread(3) citati.

Ili napraviti FIFO (pomocu mkfifo(1)) pa citati iz njega (pod uslovom da program pise tamo).

Sto se tice toga da procesor bude child, na Linuxu svaki proces mora imati parenta. Ako neces da ti proces bude child onoga koji ga je kreirao, mozes eventualno da prebacis da ti parent bude sam init. Verovatno bas to i zelis. Pogledaj daemon(3) za vise detalja.

 
Odgovor na temu

NastyBoy
Bojan Nastic
UK

Član broj: 12041
Poruke: 895
*.plus.com.



+4 Profil

icon Re: ShellExecute pod Linuxom?(C++)03.02.2007. u 12:10 - pre 178 meseci
Citat:
Ja mozda ne razumem ali u manualu za exec familiju funkcija lepo i jasno pise da stvara proces koji zamenjuje tekuci proces ili tako nesto, znaci ne izvrsava samo prosto startovanje programa. Ili ja lose razumem ili to nije to(verovatno je ovo prvo )

To jeste tako kako pishe. Stvari na *nixu rade malo drugachije od Win-a. exec familija funkcija zamenjuje image trenutnog procesa novim procesom.

Standardni nachin da na *nix-u startujesh eksterni proces bi bio da koristish fork/exec bateriju, eventualno u saradnji sa waitpid() da bi sachekao da se proces zavrshi i pokupio izlaznu vrednost.
 
Odgovor na temu

[es] :: C/C++ programiranje :: ShellExecute pod Linuxom?(C++)

[ Pregleda: 3811 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.