Return von C zu Batch?!?

Hallo!

Folgendens: Wie kann ich einen return wert von einem C-Programm(EXE) mit einen Batch-
Programm abfragen?
Bespiel:

int main(void)
{
return 7;
}

Dieses Programm wird von einem Batch(von DOS) aufgerufen. Wie komme ich jetzt an die
sieben ran???
Geht das irgendwie?
Danke

YO

P.S.: Ich weis das es stumpfsinnig ist, aber davon mal abgesehen, muß es doch irgendwie gehen.

Hi Nils,

ich habe jetzt kein DOS-Buch parat, aber schau mal in der Hilfe unter dem Begriff ERRORLEVEL nach, in dieser Variable müßte der Rückgabewert der zuletzt beendeten Anwendung stehen.

Gruß
Ted

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

‚Taschenrechner‘ in batch, mit hilfe von C
Danke Ted, hab unter Errorlevel gefunden, was ich gesucht habe.
Leider löst das mein (Haupt-) Problem nicht:

Ich möchte soetwas wie einen Taschenrechner in Batch schreiben. Und das mit Hilfe von C,
weil ich in Batch keine Zahlen addieren(usw.) kann.
ODER, geht das doch irgendwie???

Meines Wissen´s nicht.
Zum Beispiel eine Zahl einfach um eins erhöhen.

erster Versuch:
Ich habe die Zahl einem C Progi per Parameter übergeben und den erhöhten Wert
mit return zurückgegeben. Jetzt habe ich ihn in Batch als Errorlevel, was aber leider nichts bringt, weil ich jetzt jeden errerlevel mit if abfragen müsste.

zweiter Versuch:
Wert in eine Umgebungsvaribale speichern. Ich setzte in dem Batch die Variable
(z.b. set zahl=20) und greife in C daraufzu(getenv), erhöhe sie und… geht

sprintf(buffer,"set ZAHL=%d",wert); //schreibt meine Umgebungs-var in einen String
system(buffer); //führt den Befehl in dos aus
//oder so:
sprintf(buffer,"ZAHL=%d",wert);
putenv(buffer); //fügt der Environment-Tabelle einen Eintrag hinzu

Nur kann man in C die Umgebungs-Variable (anscheinend) nur während des laufenden Prozesses
änderen. Nach Programm-Ende ist die Änderung wieder weg. --> Auch nix. *snieff*

Das muss doch irgendwie gehen???
Bin dankbar für jeden Vorschlag.

YO

PS: Klar könnte ich den „Taschenrechner“ gleich komplett in C schreiben. Soll dieses Prog.
aber für einen Kumpel schreiben, der von C nicht so begeistert ist. :wink:

Hi Nils,

ich habe jetzt kein DOS-Buch parat, aber
schau mal in der Hilfe unter dem Begriff
ERRORLEVEL nach, in dieser Variable müßte
der Rückgabewert der zuletzt beendeten
Anwendung stehen.

Gruß
Ted

Puh,

einen Taschenrechner als Batch-Programm. Das ist ja wie eine Safari mit dem Ferrari! :wink:

>Nur kann man in C die Umgebungs-Variable (anscheinend) nur während des laufenden Prozesses
> änderen. Nach Programm-Ende ist die Änderung wieder weg. --> Auch nix. *snieff*
Das hat etwas mit Vererbung zu tun. Mit dem system-Befehl von C wird eine neue Shell (bei DOS die command.com) gestartet, welche das aktuelle Environment einschließlich der Variablen erbt. Nach Beendigung wird die Shell geschlossen, die Änderungen gehen verloren, da eine Vererbung nach oben nicht stattfindet.

>Das muss doch irgendwie gehen???
> Bin dankbar für jeden Vorschlag.
Da gibt es mehrere Möglichkeiten:

  1. Wert in einer Datei ablegen (am einfachsten)
  2. TSR-Programm schreiben (schwer, praktisch nur in Assembler möglich)
  3. Ein ungenutztes Byte im Rechner nutzen, um den Wert abzulegen.

Gruß
Ted
(jetzt ein paar Tage offline)