Estoy tratando de ejecutar mi primer programa de "proceso", pero aparece el siguiente error:
./fork.c: line 4: syntax error near unexpected token `('
./fork.c: line 4: `int main()'
Estoy bastante seguro de que el código es correcto:
#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);
}
¿Qué está mal?
_exit
? ¿Qué hay de malo en hacer una limpieza que ha sido registrada?fork()
funciona incluye aprender que puede copiar resultados almacenados en búfer. Al ser una llamada al sistema razonablemente complicada, probablemente sea necesaria cierta confusión en el proceso de aprendizaje.Respuestas:
No puedes simplemente correr
./fork.c
. No es un programa; Es la fuente de un programa. El uso./
supone que el archivo es un script (que no lo es) y lo trata en consecuencia.Sin embargo, como se señaló en otra respuesta, hay compiladores (como Tiny C Compiler ) que pueden ejecutar código C sin compilarlo explícitamente.
Como es un programa en C, debe compilar el programa. Intenta
cc -o fork fork.c
entonces./fork
; Funcionó aquí.fuente
cc
es un enlace simbólico agcc
./usr/bin/cc
enlaces a/opt/SUNWspro/bin/cc
uno y/opt/sunstudio12.1/bin/cc
al otro. De todos modos, sigue siendo un compilador de C./opt/ansic/bin/cc
.Ese no es un programa, ese es el código fuente de un programa.
C es un lenguaje compilado , lo que significa que debe "compilarse" en instrucciones legibles por máquina antes de poder ejecutarlo. Como está utilizando C, el "Compilador de C" (
cc
) puede hacer esto.A medida que avanza hacia programas más complicados, utilizando múltiples archivos fuente y bibliotecas externas, es probable que continúe utilizando la "Colección del compilador GNU" (
gcc
) ymake
describa cómo convertir el código fuente en un ejecutable que funcione.Esta pregunta tiene información variada sobre la diferencia entre los scripts (ya que está tratando de tratar su código fuente) y los programas compilados.
fuente
tcc
( Tiny C Compiler ) puede ejecutar código C sin compilarlo explícitamente. pastebin.com/5FZiMpEn (Comentario editado volviendo a agregarlo. Perdón por alterar el orden)