web-dev-qa-db-ja.com

このCプログラムを実行できないのはなぜですか?

最初の「プロセス」プログラムを実行しようとしていますが、次のエラーが発生します。

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

私はコードが正しいと確信しています:

 #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);
}

なにが問題ですか?

12
Engine

./fork.cだけを実行することはできません。プログラムではありません。それはプログラムのsourceです。 ./を使用すると、ファイルはスクリプト(そうではない)であると見なされ、それに応じて処理されます。

ただし、別の回答で述べられているように、明示的にコンパイルせずにCコードを実行できるコンパイラ( Tiny C Compiler など)があります。

それはCプログラムなので、プログラムをコンパイルする必要があります。 cc -o fork fork.cを試してから、./forkを試してください。ここで機能しました。

67
Renan

それはプログラムではなく、プログラムのソースコードです。

Cはコンパイル済み言語です。つまり、Cを実行するには、マシンで読み取り可能な命令に「コンパイル」する必要があります。 Cを使用しているため、「Cコンパイラ」(cc)がこれを実行できます。

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

複数のソースファイルと外部ライブラリを使用して、より複雑なプログラムに進むと、「GNUコンパイラコレクション」(gcc)とmakeを使用して、ソースコードを実行可能な実行可能ファイルに変えます。

この質問 には、スクリプト(ソースコードを処理しようとしている)とコンパイル済みプログラムの違いに関するさまざまな情報があります。

23
OrangeDog