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

Problem sa _popen na BCB6

[es] :: C/C++ programiranje :: Problem sa _popen na BCB6

[ Pregleda: 2769 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Mr. Rejn
Deki Karamatijević
Sremčica

Član broj: 2514
Poruke: 515
*.bankerinter.net.



+4 Profil

icon Problem sa _popen na BCB620.03.2006. u 12:43 - pre 221 meseci
Zasto nece da radi _popen na BCB6?
Code:

void __fastcall TForm1::Button4Click(TObject *Sender)
{
  FILE* handle;        // handle to one end of pipe
  char message[256];   // buffer for text passed through pipe
  int status;          // function return value

  // open a pipe to receive text from a process running "DIR"

  handle = _popen("dir /b", "rt");
  if (handle == NULL)
  {
    perror("_popen error");
  }

  // read and display input received from the child process

  while (fgets(message, sizeof(message), handle))  //<-- OVDE ZAKUCAVA!
  {
    fprintf(stdout, message);
  }

  // close the pipe and check the return status
    status = _pclose(handle);
  if (status == -1)
  {
    perror("_pclose error");
  }
}

Ovo je copy/paste primer iz BCB help-a, a debager pokazuje na liniju sa fgets?
Ag + Na -> Xe
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Problem sa _popen na BCB620.03.2006. u 15:03 - pre 221 meseci
Code:

if (handle == NULL)
{
   perror("_popen error");
}


Problem je sto je "handle" zaista NULL, pa kasnije taj NEISPRAVAN "handle" ide u proceduru,
gde se naravno savlja greska.

A zasto je hadnle == NULL, pojma nemam.


P.S.

Molba: Moze li ovaj primer neko da proba na drugim C/C++ kompajlerima?

 
Odgovor na temu

atko79
Sarajevo

Član broj: 34935
Poruke: 70
*.hermes.si.



Profil

icon Re: Problem sa _popen na BCB610.04.2006. u 14:01 - pre 220 meseci
Da se nakacim sa pitanjem na ovu srodnu temu ;)

Koristim _popen da izvrsim neku komandu i komanda se izvrsi uredno, ali zahtjeva potvrdu sa tastature Y/N. Kako da potvrdim sa 'Y'?
 
Odgovor na temu

kiklop74
Darko Miletić
Buenos Aires

Član broj: 78422
Poruke: 569
*.cab.prima.net.ar.

Sajt: ar.linkedin.com/pub/darko..


+13 Profil

icon Re: Problem sa _popen na BCB610.04.2006. u 16:36 - pre 220 meseci
Problem sa _popen je što očekuje postojanje kreirane konzole. Nijedna GUI aplikacija nema inicijalizovanu konzolu. Ako ovaj kod iz helpa prebaciš u konzolnu aplikaciju sve će raditi besprekorno.

Rešenje je dakle inicijalizovati konzolu za GUI process i povezati RTL sa istom.
Opciono rešenje je pokrenuti program sa CreateProcess i ručno čitati output bez _popen.

Kako se to radi je dat primer u BCB6 demo aplikaciji WinTools.


Tko leti vrijedi
 
Odgovor na temu

[es] :: C/C++ programiranje :: Problem sa _popen na BCB6

[ Pregleda: 2769 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

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