J'essaie d'exécuter mon premier programme "processus", mais j'obtiens l'erreur suivante:
./fork.c: line 4: syntax error near unexpected token `('
./fork.c: line 4: `int main()'
Je suis presque sûr que le code est correct:
#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-ce qui ne va pas?
_exit
? Quel est le problème avec un nettoyage enregistré?fork()
fonctionne comprend apprendre qu'il peut copier la sortie en mémoire tampon. Étant un appel système raisonnablement compliqué, une certaine confusion est probablement nécessaire dans le processus d'apprentissage.Réponses:
Vous ne pouvez pas simplement courir
./fork.c
. Ce n'est pas un programme; c'est la source d'un programme. L'utilisation./
suppose que le fichier est un script (ce qui n'est pas le cas) et le traite en conséquence.Cependant, comme indiqué dans une autre réponse, il existe des compilateurs (comme Tiny C Compiler ) qui peuvent exécuter du code C sans le compiler explicitement.
Puisqu'il s'agit d'un programme C, vous devez compiler le programme. Essayez
cc -o fork fork.c
alors./fork
; cela a fonctionné ici.la source
cc
est un lien symbolique versgcc
./usr/bin/cc
liens vers l'/opt/SUNWspro/bin/cc
une et/opt/sunstudio12.1/bin/cc
l'autre. Quoi qu'il en soit, c'est toujours un compilateur C./opt/ansic/bin/cc
.Ce n'est pas un programme, c'est le code source d'un programme.
C est un langage compilé , ce qui signifie qu'il doit être "compilé" en instructions lisibles par machine avant de pouvoir l'exécuter. Lorsque vous utilisez C, le "C Compiler" (
cc
) peut le faire.Au fur et à mesure que vous passez à des programmes plus compliqués, en utilisant plusieurs fichiers source et bibliothèques externes, vous passerez probablement à l'utilisation de la «Collection de compilateurs GNU» (
gcc
) etmake
pour décrire comment transformer le code source en un exécutable fonctionnel.Cette question contient diverses informations sur la différence entre les scripts (lorsque vous essayez de traiter votre code source) et les programmes compilés.
la source
tcc
( Tiny C Compiler ) peut exécuter du code C sans le compiler explicitement. pastebin.com/5FZiMpEn (Commentaire