Por que não posso executar este programa em C?

12

Estou tentando executar meu primeiro programa "processo", mas recebo o seguinte erro:

./fork.c: line 4: syntax error near unexpected token '('
./fork.c: line 4: 'int main()'

Tenho certeza de que o código está correto:

 #include <sys/types.h>
 #include <stdio.h>
 int main() {
     pid_t pid;
     printf("Hello fork()\n");
     switch(pid=fork())  {
         case -1: printf("Error by fork().....\n"); exit(0);
         case 0: printf("I'm the child process \n"); break;
         default: printf("I'm the dad \n"); break;
     }
  exit(0);
}

O que está errado?

    
por Engine 13.08.2012 / 02:28

2 respostas

67

Você não pode simplesmente executar ./fork.c . Não é um programa; é a fonte de um programa. Usar ./ assume que o arquivo é um script (que não é) e o trata de acordo.

No entanto, como observado em outra resposta, há compiladores (como o Compilador C Minúsculo ) que podem executar código C sem compilá-lo explicitamente .

Como é um programa em C, você precisa compilar o programa. Tente cc -o fork fork.c , em seguida, ./fork ; funcionou aqui.

    
por 13.08.2012 / 02:31
23

Isso não é um programa, esse é o código-fonte de um programa.

C é uma linguagem compilada , o que significa que ela deve ser "compilada" em instruções legíveis por máquina antes que você possa executá-la. Como você está usando C, o "C Compiler" ( cc ) pode fazer isso.

cc -o fork for.c   # compile the code
chmod +x fork      # ensure it it executable
./fork             # run the compiled program

À medida que você passa para programas mais complicados, usando vários arquivos de origem e bibliotecas externas, é provável que você use a "Coleção de compiladores GNU" ( gcc ) e make para descrever como transformar a fonte código em um executável de trabalho.

Esta questão tem várias informações sobre a diferença entre os scripts (conforme você está tentando para tratar seu código-fonte) e programas compilados.

    
por 13.08.2012 / 11:33

Tags