如何在Linux中创建进程?
加载到内存中并执行的程序称为进程。简单来说,一个进程就是一个正在执行的程序。
让我们检查一下如何在Linux中创建进程
可以通过fork()
系统调用创建一个新进程。新进程包含原始进程的地址空间的副本。fork()
从现有流程创建新流程。现有进程称为父进程,而新创建的进程称为子进程。该函数从父进程中调用。父进程和子进程都在后面的指令处继续执行,对于新进程,fork()
的返回码fork()
为零,而子进程的标识符返回给父进程。
Fork()系统调用位于<sys/types.h>库中。
系统调用getpid()
返回当前进程getppid()
的进程ID,并返回当前进程的父进程的进程ID。
示例
让我们以如何使用fork()
系统调用创建子进程为例。
#include <unistd.h> #include <sys/types.h> #include <stdio.h> int main( ){ pid_t child_pid; child_pid = fork (); // Create a new child process; if (child_pid < 0) { printf("fork failed"); return 1; } else if (child_pid == 0) { printf ("child process successfully created!\n"); printf ("child_PID = %d,parent_PID = %d\n", getpid(), getppid( ) ); } else { wait(NULL); printf ("parent process successfully created!\n"); printf ("child_PID = %d, parent_PID = %d", getpid( ), getppid( ) ); } return 0; }
输出结果
child process successfully created! child_PID = 31497, parent_PID = 31496 parent process successfully created! child_PID = 31496, parent_PID = 31491
在此,getppid()
子进程返回与getpid()
父进程相同的值。
pid_t是代表进程ID的数据类型。它是为过程识别而创建的。每个进程都有一个唯一的ID号。接下来,我们调用系统调用fork()
,它将从调用过程中创建一个新过程。父进程是调用函数,新进程是子进程。fork()
如果成功创建该过程,则系统调用将返回零或正值。