如何在Linux中创建进程?


加载到内存并执行的程序称为进程。简单来说,进程就是正在执行的程序。

让我们来看看如何在Linux中创建进程。

可以使用fork()系统调用创建新的进程。新进程包含原始进程地址空间的一个副本。fork()从现有进程创建新进程。现有进程称为父进程,新创建的进程称为子进程。该函数由父进程调用。父进程和子进程都从fork()之后的指令继续执行,fork()的返回值对于新进程为零,而子进程的进程标识符则返回给父进程。

Fork()系统调用位于<sys/types.h>库中。

系统调用getpid()返回当前进程的进程ID,getppid()返回当前进程的父进程的进程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!
");       printf ("child_PID = %d,parent_PID = %d
",       getpid(), getppid( ) );    } else {       wait(NULL);       printf ("parent process successfully created!
");       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()返回零或正值。

更新于:2020年1月31日

12K+ 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告