• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[solved] Wie Rückgabewert eines C-Programms ausgeben

Calvin

Hacker
Hi allerseits,

ich rufe in einem Bash-Skript ./programmname ein C-Programm mit der Zeile auf. Den Rückgabewert des C-Programms möchte ich im Skript weiter verwenden. Wie geht das? Ich habe es schon mit Kommandosubstitution ` ` probiert, aber da wird ja nichts ausgegeben :? Das bringt also nichts :(

Gruß
Calvin
 

abgdf

Guru
Googlen zu 'bash "return value"' sagt "$?".

Oder im C-Programm mit printf() oder puts() was ausgeben, das dann mit `` erfaßt werden kann.

Gruß
 
OP
C

Calvin

Hacker
Ah, das $? habe ich schonmal gehört. Danke abgdf. Ich hatte bei google wohl die falschen Suchbegriffe verwendet.

EDIT

Hm, scheinbar kann $? keine großen Zahlen verarbeiten?!? Der return-Wert meiner Funktion ist eine 7-stellige Integerzahl. Mit $? bekomme ich aber nur maximal(?) dreistellige Zahlen. Hier mal mein Beispiel auf das wesentliche reduziert.

Code:
// gcc cprogramm.c -o cprogramm
#include<stdio.h>
int main()
{
   int a=12345;
   return a;
}

Code:
#!/bin/bash
./cprogramm
echo $?

Die Ausgabe ist 127 :? Natürlich könnte ich auch die Ausgabe mit printf machen. So habe ich es auch bisher gelöst. Aber ich bereite mich gerade auf eine Klausur vor und wenn ich die Aufgabenstellung richtig verstehe, soll im C-Programm keine Ausgabe gemacht werden.
 
$? sollte nur Werte zwischen 0 und 255 annehmen können.

man 3 exit:
Code:
      The  exit() function causes normal process termination and the value of status & 0377 is
       returned to the parent (see wait(2)).
 
OP
C

Calvin

Hacker
OK, danke für die Antworten. Dann ist printf die einzige Möglichkeit, die Aufgabe zu lösen. Und auch die deutlich angenehmere :D
 
Oben