Ich versuche, mein erstes "Prozess" -Programm auszuführen, erhalte jedoch die folgende Fehlermeldung:
./fork.c: line 4: syntax error near unexpected token `('
./fork.c: line 4: `int main()'
Ich bin mir ziemlich sicher, dass der Code korrekt ist:
#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);
}
Was ist falsch?
_exit
? Was ist falsch daran, eine registrierte Bereinigung durchzuführen?fork()
umfasst das Erlernen, dass es gepufferte Ausgaben kopieren kann. Da es sich um einen einigermaßen komplizierten Systemaufruf handelt, ist im Lernprozess wahrscheinlich eine gewisse Verwirrung erforderlich.Antworten:
Du kannst nicht einfach rennen
./fork.c
. Es ist kein Programm; Es ist die Quelle für ein Programm. Verwenden./
davon , dass die Datei ein Skript ist (was nicht der Fall ist), und sie wird entsprechend behandelt.Wie in einer anderen Antwort erwähnt, gibt es jedoch Compiler (wie Tiny C Compiler) ), die C-Code ausführen können, ohne ihn explizit zu kompilieren.
Da es sich um ein C-Programm handelt, müssen Sie das Programm kompilieren. Versuchen Sie es
cc -o fork fork.c
dann./fork
; es hat hier funktioniert.quelle
cc
eine symbolische Verknüpfung zugcc
./usr/bin/cc
Links zu/opt/SUNWspro/bin/cc
auf der einen und/opt/sunstudio12.1/bin/cc
auf der anderen Seite . Unabhängig davon ist es immer noch ein C-Compiler./opt/ansic/bin/cc
.Das ist kein Programm, das ist der Quellcode für ein Programm.
C ist eine kompilierte Sprache, dh sie muss in maschinenlesbare Anweisungen "kompiliert" werden, bevor Sie sie ausführen können. Da Sie C verwenden, kann der "C Compiler" (
cc
) dies tun.Wenn Sie zu komplizierteren Programmen übergehen, die mehrere Quelldateien und externe Bibliotheken verwenden, werden Sie wahrscheinlich die "GNU Compiler Collection" (
gcc
) verwenden undmake
beschreiben, wie Sie den Quellcode in eine funktionierende ausführbare Datei verwandeln.Diese Frage enthält verschiedene Informationen zum Unterschied zwischen Skripten (während Sie versuchen, Ihren Quellcode zu behandeln) und kompilierten Programmen.
quelle
tcc
( Tiny C Compiler ) C-Code ausführen, ohne ihn explizit zu kompilieren. pastebin.com/5FZiMpEn (Kommentar durch erneutes Hinzufügen bearbeitet. Entschuldigung, dass Sie die Bestellung