Estou tentando executar o 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?
_exit
? O que há de errado em fazer qualquer limpeza registrada?fork()
funciona inclui o aprendizado de que ele pode copiar a saída em buffer. Sendo uma chamada de sistema razoavelmente complicada, provavelmente é necessária alguma confusão no processo de aprendizado.Respostas:
Você não pode simplesmente correr
./fork.c
. Não é um programa; é a fonte de um programa. O uso./
assume que o arquivo é um script (o que não é) e o trata adequadamente.No entanto, conforme observado em outra resposta, existem compiladores (como o Tiny C Compiler ) que podem executar o código C sem compilá-lo explicitamente.
Como é um programa em C, você precisa compilar o programa. Tente
cc -o fork fork.c
então./fork
; funcionou aqui.fonte
cc
é um link simbólico paragcc
./usr/bin/cc
links para/opt/SUNWspro/bin/cc
um e/opt/sunstudio12.1/bin/cc
outro. Independentemente disso, ainda é um compilador C./opt/ansic/bin/cc
.Isso não é um programa, é o código fonte de um programa.
C é uma linguagem compilada , o que significa que deve ser "compilada" em instruções legíveis por máquina para que você possa executá-la. Como você está usando C, o "C Compiler" (
cc
) pode fazer isso.À medida que você avança para programas mais complicados, usando vários arquivos de origem e bibliotecas externas, você provavelmente continuará usando a "Coleção GNU Compiler" (
gcc
) emake
descrever como transformar o código fonte em um executável.Esta pergunta possui várias informações sobre a diferença entre scripts (como você está tentando tratar seu código-fonte) e programas compilados.
fonte
tcc
( Tiny C Compiler ) pode executar o código C sem compilá-lo explicitamente. pastebin.com/5FZiMpEn (comentário Editado por re acrescentando-it Desculpe por estragar a ordem..)