Forum: Compiler & IDEs execlp "no such file or directory"


von Thomas K. (Gast)


Lesenswert?

Hallo, ich habe folgenden code:
1
#include <stdio.h>
2
#include <stdlib.h>
3
#include <errno.h>
4
#include <unistd.h>
5
6
int main(void){
7
 char com[20];
8
 fgets(com, sizeof(com), stdin);
9
 printf("Befehl: $s\n", com);
10
11
 execlp(com, com, NULL);
12
 printf("%s\n", strerror(errno));
13
14
 exit(0);
15
}

Bei Eingabe von z.B. ls kommt als Fehler kommt "no such file or 
directory".
Gebe ich aber "ls" direkt als Argumente von execlp() ein, funktioniert 
es.

Woran liegt das?

von Thomas K. (Gast)


Lesenswert?

Thomas K. schrieb:
> printf("Befehl: $s\n", com);

muss natürlich printf("Befehl: %s\n", com); lauten

von Dr. Sommer (Gast)


Lesenswert?

Aus der fgets Dokumentation:
> A newline character makes fgets stop reading, but it is considered a valid
> character by the function and included in the string copied to str.
Dein "com" enthält am Ende noch (mindestens) ein '\n'. Das musst du 
abschneiden (am besten zusammen mit allem was ' ', '\r', '\n' ist).

von Dirk B. (dirkb2)


Lesenswert?

fgets speichert das '\n' von mit ab.

Dann lautet der Befehl "ls\n". Und den gibt es nicht.

Mach mal
1
 printf("Befehl: <%s>\n", com);
 und achte auf die Position der >

von Thomas K. (Gast)


Lesenswert?

Das > ist tatsächlich in einer neuen Zeile. Ich denke das wird der 
Fehler sein. Danke Euch beiden!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.