Saya mencoba menjalankan program "proses" pertama saya, tetapi saya mendapatkan kesalahan berikut:
./fork.c: line 4: syntax error near unexpected token `('
./fork.c: line 4: `int main()'
Saya cukup yakin bahwa kodenya benar:
#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);
}
Apa yang salah?
_exit
? Apa yang salah dengan melakukan pembersihan yang telah didaftarkan?fork()
kerjanya termasuk belajar bahwa ia dapat menyalin output buffered. Menjadi panggilan sistem yang cukup rumit, beberapa kebingungan mungkin diperlukan dalam proses pembelajaran.Jawaban:
Anda tidak bisa lari begitu saja
./fork.c
. Ini bukan program; itu sumber untuk suatu program. Menggunakan./
asumsi bahwa file tersebut adalah skrip (yang bukan) dan memperlakukannya sesuai.Namun, seperti disebutkan dalam jawaban lain, ada kompiler (seperti Tiny C Compiler ) yang dapat mengeksekusi kode C tanpa secara eksplisit mengompilasinya.
Karena ini adalah program C, Anda harus mengkompilasi program tersebut. Coba
cc -o fork fork.c
kemudian./fork
; ini bekerja di sini.sumber
cc
adalah tautan simbolis kegcc
./usr/bin/cc
tautan ke/opt/SUNWspro/bin/cc
satu dan/opt/sunstudio12.1/bin/cc
di sisi lain. Apapun, itu masih kompiler C./opt/ansic/bin/cc
.Itu bukan program, itu kode sumber untuk suatu program.
C adalah bahasa yang dikompilasi , artinya harus "dikompilasi" ke dalam instruksi yang dapat dibaca mesin sebelum Anda dapat menjalankannya. Saat Anda menggunakan C, "C Compiler" (
cc
) dapat melakukan ini.Saat Anda beralih ke program yang lebih rumit, menggunakan beberapa file sumber dan pustaka eksternal, Anda kemungkinan akan beralih menggunakan "GNU Compiler Collection" (
gcc
) danmake
untuk menjelaskan cara mengubah kode sumber menjadi executable yang berfungsi.Pertanyaan ini memiliki berbagai informasi tentang perbedaan antara skrip (karena Anda mencoba untuk memperlakukan kode sumber Anda) dan mengkompilasi program.
sumber
tcc
( Tiny C Compiler ) dapat mengeksekusi kode C tanpa mengompilasinya secara eksplisit. pastebin.com/5FZiMpEn (komentar yang diedit dengan menambahkannya kembali. Maaf telah mengacaukan pesanan.)