linuxプロセス作成共通関数

1789 ワード

プロセスIDの取得
#include <sys/types.h>
#include <unistd.h>

pid_t getpid(void)
//     ID

pid_t getppid(void)
//     ID

サブプロセスの作成
#include<unistd.h>

pid_t fork(void)

//  :     
//fork    ,     ,         
//1.    ,fork          PID
//2.    ,fork  0
//3.      ,fork      
//  :           ,     、      
//          ,     
#include <sys/types.h>
#include <unistd.h>

pid_t vfork(void)

//  :     

vforkとforkはサブプロセスの
違い:
  • fork:サブプロセスコピー親プロセスのデータセグメント
  • vfork:サブプロセスと親プロセスが共有するデータセグメント
  • fork:親、子プロセスの実行順序不確定
  • vfork:サブプロセスが先に実行され、親プロセスが
  • に実行されます.
    exec関数ファミリー
    execは、呼び出されたプログラムを実行されたプログラムに置き換えます.
    forkと区別:forkは新しいプロセスを作成し、新しいPIDを生成し、execは新しいプログラムを起動し、既存のプロセスを置き換えるため、プロセスのPIDは変更されません.
    execl
    #include <unistd.h>
    
    int execl(const char *path, const char *arg1,...)
    //    :
    //path:       (     )
    //arg1-argn:             ,    。    (NULL)  

    execlp
    #include <unistd.h>
    
    int execlp(const char *path, const char *arg1,...)
    //    :
    //path:      (    ,  path          )
    //arg1-argn:             ,    。    (NULL)  

    execv
    #include <unistd.h>
    
    int execv(const char *path, char *const argv[])
    //    :
    //path:      (     )
    //argv[]:               

    system
    #include <stdlib.h>
    
    int system(const char *string)
    //  :
    //  fork     ,      /bin/sh -c string     string      

    プロセス待機
    #include <sys/types.h>
    #include <sys/wait.h>
    
    pid_t wait(int *status)
    //  :     ,