2014-12-03 124 views
0

我試圖從一個用戶輸入的子進程運行一個EXEC命令,它不打印/工作。execl()不起作用/打印

這裏是我的代碼:

char input[100]; 
int pid; 

printf("$ "); 
fgets(input, 100, stdin); 

while (strncmp(input, "exit", 4)){ 
    pid = fork(); 
    if(pid == 0){ 
     char str[105]; 
     strcpy(str, "/bin/"); 
     strcat(str, input); 
     printf("%s", str); 
     execl(str, input, NULL); 
     exit(0); 
    } 
    else if(pid < 0){  /* error while doing fork */ 
     exit(1); 
    } 
    else{ 
     wait(0); 
    } 

    printf("$ "); 
    fgets(input, 10, stdin); 
} 

exit(0); 
+1

您是否有任何錯誤或調試信息? – EWit 2014-12-03 17:30:13

+0

我是新來的,所以沒有。它編譯好,但沒有打印出來,當我做ls – Mark 2014-12-03 17:44:53

回答

0

str以及input包含一個換行符。在致電execl之前將其刪除。

+0

修剪所有的尾部空白將會更好。 – 2014-12-03 17:38:01

+0

我不知道修剪是否是一個好主意,因爲我需要再次使用相同的數組。 – Mark 2014-12-03 17:57:55