Fork membuat proses baru. Proses yang baru dibuat adalah proses anak. Ini adalah salinan dari kode selanjutnya dari proses induk. Biasanya digunakan sebagai server multi-proses.
Gunakan getpid untuk menentukan apakah proses saat ini merupakan proses anak atau proses induk.
Perhatikan contoh berikut:
Berikut isi kutipannya:
#termasuk <sys/types.h> #termasuk <unistd.h> #termasuk <stdio.h> ke dalam utama() { pid_t pid; int statis n = 0; printf("garpu!n"); beralih (pid = garpu()) { kasus-1: { /* ..pid.-1.garpu.... */ /* ....... */ /*..........*/ perror("Garpu gagal!"); merusak; } kasus 0: { /* pid.0.... */ printf("[anak]saya anak!n"); printf("[anak]getpid=[%d]n", getpid() ); printf("[anak]pid=[%d]n", pid ); merusak; } bawaan: { /* pid..0.... */ printf("[orang tua]saya orang tua!n" ); printf("[orang tua]getpid=[%d]n",getpid() ); printf("[orang tua]pid=[%d]n",pid ); merusak; } } printf("n=[%d]n",n++); kembali 0; } |
Contoh ini dikompilasi dengan gcc di Linux, dan hasil yang dijalankan adalah sebagai berikut:
Berikut isi kutipannya:
garpu! [anak] saya seorang anak! [anak]getpid=[7422] [anak]pid=[0] n=[0] [orang tua] saya adalah orang tua! [induk]getpid=[7421] [induk]pid=[7422] n=[0] |