2016-09-30 1 views
-4

Код компилируется, но не запускается и дает ошибку в строке 7 и строке 10. Я не могу исправить ошибки, поэтому, пожалуйста, помогите мне. Ниже приведены последовательность ошибок в оболочке:Код вилки компилируется, но дает ошибку во время выполнения

./mylab3.c: line 7: char: command not found 
./mylab3.c: line 10: syntax error near unexpected token `(' 
./mylab3.c: line 10: `int main() 

Код:

#include <stdio.h> 
#include <stdlib.h> 
#include <unistd.h> 
#include <sys/wait.h> 


char *env_init[]= { "USER=unknown", "PATH=/tmp",NULL}; 


int main() 
{ 
    pid_t pid; 
    int flag, status; 
// Create child process #1 
    pid = fork(); 
    if (pid < 0) 
    { 
     perror("fork error"); 
    } 
    else if (pid == 0) 
    { 
// Child process – replace with different program 
     flag = execle("/bin/Is", "Is", "-IF",NULL,env_init); 
     if (flag < 0) 
     { 
      perror("execle error"); 
     } 
    } 
    else 
    { 

     if (wait(&status) != pid) 
     { 
      perror("wait error"); 
     } 
    } 
//Create child process #2 
    pid = fork(); 
    if (pid < 0) 
    { 
     perror ("fork error"); 
    } 
    else if (pid == 0) 
    { 

     flag = execlp("./lab03script","lab03.script","file1", "file2", NULL); 
     if (flag < 0) 
     { 
      perror("execlp error"); 
     } 

    } 
    else 
    { 

     if (wait(&status) != pid) 
     { 
      perror("wait error") ; 
     } 
    } 
    exit (0); 
} 
+4

'./Mylab3.c' ?? Вы пытаетесь запустить файл C напрямую? Пожалуйста, покажите, как именно вы компилировали и запускали программу. – kaylum

+0

Правильно отформатируйте свой код. –

+1

Вам необходимо скомпилировать исходный код в исполняемый файл и запустить исполняемый файл, а не источник – qrdl

ответ

-2

Изменить

char *env_init[]= { "USER=unknown", "PATH=/tmp",NULL}; 

в

const char *env_init[]= { "USER=unknown", "PATH=/tmp",NULL}; 

Преобразовать строку на символ * не рекомендуется.

+1

Ответ не имеет значения – qrdl

+0

@qrdl Нет, это не имеет значения, потому что если вы используете компилятор с версией, где этот «устаревший» синтаксис не рассматривается, вы вы получите ошибку и, возможно, вы узнаете, почему. Irrelevant говорит о вещах, не связанных с кодом или о стиле кодирования, или что-то в этом роде. – Alexi

+0

Ошибки, отправленные OP, указывают на то, что проблема связана с константой? И приведение из non-const в const является неявным, поэтому ваш ответ не имеет значения и не прав. Кстати, что вы подразумеваете под строкой? Такого типа нет в C. – qrdl