Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 6 odgovora
  • 2.373 pregleda

Najnovija ↓

Redirekcija standardnog i/o -a pri pozivu programa 07.05.2009. u 20:58 · pre 212 meseci #1
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.
Potpis
if it walks like a duck and quacks like a duck, it could be a dragon doing a duck
impersonation.
Re: Redirekcija standardnog i/o -a pri pozivu programa 08.05.2009. u 00:44 · pre 212 meseci #3
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... :(
Potpis
if it walks like a duck and quacks like a duck, it could be a dragon doing a duck
impersonation.
Re: Redirekcija standardnog i/o -a pri pozivu programa 08.05.2009. u 10:53 · pre 212 meseci #4
> 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.
Potpis
Do not be a help vampire (http://slash7.com/pages/vampires), use the google.

How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html
Re: Redirekcija standardnog i/o -a pri pozivu programa 09.05.2009. u 12:55 · pre 212 meseci #5
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.
Potpis
if it walks like a duck and quacks like a duck, it could be a dragon doing a duck
impersonation.
Re: Redirekcija standardnog i/o -a pri pozivu programa 09.05.2009. u 15:02 · pre 212 meseci #6
> 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.

Potpis
Do not be a help vampire (http://slash7.com/pages/vampires), use the google.

How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html
Re: Redirekcija standardnog i/o -a pri pozivu programa 09.05.2009. u 21:45 · pre 212 meseci #7
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.
Potpis
if it walks like a duck and quacks like a duck, it could be a dragon doing a duck
impersonation.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme