perror in eine Integer oder Stringvaribel übergeben?
-
Hallo, ich programmiere in Linux mit g++ und code::blocks, der folgende c++ Code, möchte ich gerne erweitern, aber ich weiss nicht wie >>>
#include <errno.h> // Die Header sind das Grundgerüst #include <iostream> #include <fstream> #include <cstdio> #include <cstdlib> #include <cstring> #include <ctime> #include <sstream> #include <unistd.h> #include <stdio.h> // einige c++/c Header werden gebraucht oder auch nicht using namespace std; void excel1(); int main(int argc, char * argv [] ) { excel1(); excel2(); } void excel1() { printf("\nexcel1\n"); if ( execl("/bin/l", "-r", "-t", "-l", NULL) == -1) perror("Fehler in excel1()" ); // <<< Dieses hat mein Interesse cout << "Text1" << endl; }
Das Codeschnipsel von oben >>>
[code="cpp"]if ( execl("/bin/l", "-r", "-t", "-l", NULL) == -1)
perror("Fehler in excel1()" );[c][/c][/code]
Wie kann ich perror in eine Integer oder Stringvaribel übergeben?
P.S I= perror funktioniert nicht.
-
#include <unistd.h> #include <cstdio> #include <iostream> void excel1(); int main() { excel1(); } void excel1() { std::printf("excel1\n"); if ( execl("/bin/l", "-r", "-t", "-l", NULL) == -1) perror("Fehler in excel1()"); std::cout << "Text1\n"; }
So. Was willst du?
-
Jetzt mal ins blaue geraten, was Du wissen willst:
man perror schrieb:
SEE ALSO strerror(3)
-
Warum willst Du perror eine Integer- oder Stringvariable übergeben? Was soll perror damit machen? Was willst Du erreichen?
Und gewöhn Dir ganz schnell mal wieder ab, erst mal alles mögliche zu includieren. Includiere nur die Header, die Du wirklich brauchst.
-
tntnet
Ich will
perror
deswegen an eine oder mehrere Variablen übergeben, weil ich will die Daten verarbeiten.
-
Neee, du verstehst falsch. Was willst du wirklich?
-
Mister C++ schrieb:
tntnet
Ich will
perror
deswegen an eine oder mehrere Variablen übergeben, weil ich will die Daten verarbeiten.
Und das soll man verstehen . Was willst Du wohin übergeben und was willst Du damit erreichen?
-
SG1
man perror schrieb:
SEE ALSO strerror(3)Ich werde mich mal darum kümmern.
-
perror
ist wie folgt definiert:#include <stdio.h> void perror(const char *s);
End of story.
Das bedeutet, du kannst
perror
nur eine 0-terminierte Zeichenkette (aka C-String) übergeben. Wenn du die Ausgabe vonperror
mit extra Information bereichen willst, dann musst du im Voraus eine Zeichenkette selber basteln, die diese Info enthält. Zum Beispiel#include <stdio.h> ... char msg[1024]; sprintf(msg, "Error on line %d, number of errors: %d\n", lineno, errcount); perror(msg);
Wenn du sowas machen willst, dann ist es weniger umständlich man: strerror zu nehmen (wie bereits erwähnt)
#include <errno.h> #include <string.h> #include <stdio.h> ... fprintf(stderr, "Error on line %d, number of errors: %d: %s\n", lineno, errcount, strerror(errno));
In beiden Fällen wäre die Ausgabe gleich.
-
Danke supertux, auch für dein Listing.
Sollte es keinen Widerspruch geben, ist von meinem Standpunkt das hiesige Thema/Thread gelöst.