Fehler mit Dateioperation...
-
Hallo,
ich öffne eine Pipe für einen Prozess und und mochte die Ausgabe abfangen.
Das funktioniert auch gut, solange ich die Funktion nur in dem main Fuktionsrumpf aufrufe, also so:
[code type"C++"]
void main(){
ProcessIpInstall();
}
[/cpp]
Hier die Funktion, die auch so funktioniert:void ProcessIpInstall(){ FILE *hFile = NULL; FILE *hwFile = NULL; char lpBuffer[500]; _flushall();//flush all buffers //raise(SIGILL);//raise signal for terminating process hFile = _popen("ipconfig /all","rt"); hwFile = fopen("C:\\ipresult.txt","a+"); if(hFile != NULL){ while(!feof(hFile)){ fgets(lpBuffer,100,hFile); fputs(lpBuffer,hwFile); } } else { MessageBox(NULL,"Prozess konnte nicht\ninitialisiert werden!","Fehler in Applikation! ",MB_OK|MB_ICONSTOP|MB_TASKMODAL|MB_TOPMOST); _exit(6);//Exit Process with exit code 6 "Invalide Handle" } }
Aber warum funktioniert das nicht in einer Win32 Applikation, da bekomme ich immer mit GetLastError den wert 131 "Es wurde versucht, den Dateizeiger vor den Anfang der Datei zu bewegen."
Was soll das , das verstehe ich nicht, warum geht das in einer anderen Datei und nicht in der eigentlichen appliaktion in der es soll. Es kann ja nicht daran liegen das es einen anderen typ app ist, sprich WinMain(...) und nicht main. Einfach nur blödsinn, ich komme nicht dahinter.........
Danke für jede Hilfe....
Gruß Ken
-
... vielleicht weil BillyBoy das hier schreibt:
_popen works properly in a Console application. To create a Windows application that redirects input and output, see Creating a Child Process with Redirected Input and Output in the Platform SDK.
-
Tja, ich glaube ich sollte mal das kleingedruckte öfter lesen!
Danke noch mal......
Gruß Ken