📅  最后修改于: 2023-12-03 15:13:46.022000             🧑  作者: Mango
The fork()
function is a system call that is used in C programming to create a new process. It allows a process to create a child process, which is an identical copy of the original process, except for a few attributes. The child process starts from the point where the fork()
function was called, and it continues execution independently of the parent process.
The syntax for the fork()
function is as follows:
#include <unistd.h>
pid_t fork(void);
The fork()
function returns an integer value to the parent process and the child process. The return value holds different meanings:
If the fork()
function fails to create a new process, it returns -1 to the parent process.
Here's an example code snippet that demonstrates the usage of fork()
function:
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main() {
pid_t pid;
// Create a new process
pid = fork();
if (pid < 0) {
// Error occurred while forking
fprintf(stderr, "Fork failed");
return 1;
}
else if (pid == 0) {
// Code executed by child process
printf("Hello, I am the child process!\n");
printf("My PID is: %d\n", getpid());
}
else {
// Code executed by parent process
printf("Hello, I am the parent process!\n");
printf("Child process ID: %d\n", pid);
printf("My PID is: %d\n", getpid());
}
return 0;
}
In this example, the program creates a new process using the fork()
function. The fork()
function is called once, but it returns twice - once in the parent process and once in the child process.
pid
will be greater than 0, indicating the process ID (PID) of the child process. The parent process executes the code in the else
block and prints the appropriate messages.pid
will be 0. The child process executes the code in the if
block and prints the appropriate messages.The fork()
function is a powerful tool for creating new processes in C programming. By using this function, a programmer can easily create child processes that can execute independently of the parent process. It allows for concurrent execution of multiple tasks and can be utilized in various scenarios, such as parallel processing and creating server-client systems.
Note: It's important to handle error conditions when using
fork()
by checking the return value for -1 in order to handle potential failures properly.