如何在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()如果成功创建该过程,则系统调用将返回零或正值。