我正在尝试运行我的第一个“进程”程序,但出现以下错误:
./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);
}
怎么了?
答案1
你不能就这么跑./fork.c
。这不是一个程序;而是一个程序。这是来源对于一个程序。使用./
假设该文件是一个脚本(实际上不是)并相应地对待它。
然而,正如另一个答案中所指出的,有编译器(比如小 C 编译器)无需显式编译即可执行 C 代码。
由于是C程序,所以必须编译该程序。cc -o fork fork.c
那就试试吧./fork
;它在这里起作用了。
答案2
那不是程序,那是程序的源代码。
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
描述如何将源代码转换为工作可执行文件。
这个问题有关于脚本(当您尝试处理源代码时)和编译程序之间的差异的各种信息。