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

Redirekcija standardnog i/o -a pri pozivu programa

[es] :: Pascal / Delphi / Kylix :: Redirekcija standardnog i/o -a pri pozivu programa

[ Pregleda: 1749 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Boris B.
Ljubljana

Član broj: 213615
Poruke: 286
95.176.184.*



+14 Profil

icon Redirekcija standardnog i/o -a pri pozivu programa07.05.2009. u 19:58 - pre 182 meseci
Kako mogu jednostavno da redirektujem standardni input/output kada pozivam konzolni exe (win32, ne DOS) iz svoje aplikacije?
Probao sam varijante sa '>' i '<' i ne rade. Postoji resenje na MSDN-u sa pajpovima ali mi izgleda komplikovano za portovanje u Delphi.

if it walks like a duck and quacks like a duck, it could be a dragon doing a duck
impersonation.
 
Odgovor na temu

morlic
Milos Orlic
Beograd

Član broj: 6081
Poruke: 735
93.86.45.*



+1 Profil

icon Re: Redirekcija standardnog i/o -a pri pozivu programa07.05.2009. u 20:36 - pre 182 meseci
Da li ovo radi to sto si zeleo:

http://delphi.about.com/cs/adptips2001/a/bltip0201_2.htm

http://www.experts-exchange.co.../Pascal/Delphi/Q_22503522.html
 
Odgovor na temu

Boris B.
Ljubljana

Član broj: 213615
Poruke: 286
95.176.184.*



+14 Profil

icon Re: Redirekcija standardnog i/o -a pri pozivu programa07.05.2009. u 23:44 - pre 182 meseci
Hvala na linkovima, to je bas to sto sam trazio mada mi nije resilo problem. Kod iz drugog linka radi bez greske i input i output, ali je problem izgleda u aplikaciji koju pokusavam da pokrenem.

Konkretno hocu da napravim backup PostgreSQL baze preko ugradjenog cmdline programceta pg_dump.exe, ali izgleda da program ne koristi stdin/out nego neku ncurses varijantu za direktnu komunikaciju sa terminalom, zato mi i nije radila redirekcija sa '>' i '<'. A program su napravili tako da password za bazu moras da otkucas, nema nikakav parametar...
if it walks like a duck and quacks like a duck, it could be a dragon doing a duck
impersonation.
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Redirekcija standardnog i/o -a pri pozivu programa08.05.2009. u 09:53 - pre 182 meseci
> Konkretno hocu da napravim backup PostgreSQL baze preko ugradjenog cmdline programceta pg_dump.exe, ali izgleda da program ne koristi
> stdin/out

Čak ni stderr.

> zato mi i nije radila redirekcija sa '>' i '<'. A program su napravili tako da password za bazu moras da otkucas, nema nikakav parametar

Ipak izgleda da ima, pogledaj: http://markmail.org/message/lckeudm3z6q263jo.
 
Odgovor na temu

Boris B.
Ljubljana

Član broj: 213615
Poruke: 286
*.dial-up.dsl.siol.net.



+14 Profil

icon Re: Redirekcija standardnog i/o -a pri pozivu programa09.05.2009. u 11:55 - pre 182 meseci
Znam za resenje za globalnom env. varijablom ali tu je drugi problem: pg_dump je odvojeni program/proces i ako postavis globalnu varijablu $PGPASSWORD sa WinAPI SetEnviromentVariable onda se desi sledece - quote sa MSDN-a:
Citat:

Remarks
This function has no effect on the system environment variables or the environment variables of other processes.


Kada se pokrene pg_dump proces nece videti tvoju env. varijablu... Resenje je cackanje po registry-ju koje moze biti (i po firmama verovatno jeste) zabranjeno za trenutno logiranog korisnika.

Na svu srecu Postgres je open-source, pa smo malo modifikovali pg_dump i pg_restore. Sada je moguce proslediti password preko komandne linije preko "-W password". Kompajlirano je sa MSVC 2005 za Postgres 8.3.7. Iz source-a se vidi da za se za password zaista ne koristi stdin i out nego neki termIn i termOut, koji verovatno direktno komunicira sa terminalom kao sto sam pretpostavio. Poruke o greskama idu na stderr, tako da se iz delphija sada moze koristiti kod koji je postavio gosn. morlic. Ako ikome zatreba modifikovani exe-ju su u attachment-u.

Edit: Zbog binarnog sadrzaja i mogucih problema password za arhivu je "postgres". Dodao sam jos i popravljeni RedCon unit za redirekciju konzole iz morlicevog posta.
if it walks like a duck and quacks like a duck, it could be a dragon doing a duck
impersonation.
Prikačeni fajlovi
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Redirekcija standardnog i/o -a pri pozivu programa09.05.2009. u 14:02 - pre 182 meseci
> Znam za resenje za globalnom env. varijablom ali tu je drugi problem: pg_dump je odvojeni program/proces i ako postavis globalnu
> varijablu $PGPASSWORD sa WinAPI SetEnviromentVariable onda se desi sledece - quote sa MSDN-a:

Ne znam kako si ga pokretao ali ako to učiniš preko CreateProcess imaš mogućnost da podesiš enviroment variables, osim toga tako startovani proces postaje
child tvog programa i samim tim nasleđuje njegove enviroment variables.

Evo dela iz MSDNa:
By default, a child process inherits the environment variables of its parent process. However, you can specify a different environment for the child process by creating a new environment block and passing a pointer to it as a parameter to the CreateProcess function.


 
Odgovor na temu

Boris B.
Ljubljana

Član broj: 213615
Poruke: 286
95.176.173.*



+14 Profil

icon Re: Redirekcija standardnog i/o -a pri pozivu programa09.05.2009. u 20:45 - pre 182 meseci
Nisam koristio CreateProcess, nego ubogi ShellExecute. Nisam znao za foru da child proces nasledjuje enviroment od parenta... Svakako je lakse nego kompajlirati pg_dump svaki put kada izadje nova verija postgresa, hvala puno.
if it walks like a duck and quacks like a duck, it could be a dragon doing a duck
impersonation.
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Redirekcija standardnog i/o -a pri pozivu programa

[ Pregleda: 1749 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

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