コマンドとかプロセスを起動する
fork()
システムコール
子プロセスを生成する
子プロセスがコピーするコピー元のプロセスを親プロセス、コピーされたプロセスを子プロセスと呼ぶ
code:memo.c
#include <unistd.h>
pid_t fork(void);
vfork()
システムコール
子プロセスを作成し、親をブロックする(?)
未定義動作を起こしやすいので使ってはいけない
POS33-C. vfork() を使用しない
code:memo.c
#include <sys/types.h>
#include <unistd.h>
pid_t vfork(void);
posix_spawn()
指定されたプロセス・イメージ(?)から子プロセスを生成する
code:memo.c
#include <spawn.h>
int posix_spawn(pid_t *pid, const char *path,
const posix_spawn_file_actions_t *file_actions,
const posix_spawnattr_t *attrp,
char *const argv[], char *const envp[]);
int posix_spawnp(pid_t *pid, const char *file,
const posix_spawn_file_actions_t *file_actions,
const posix_spawnattr_t *attrp,
char *const argv[], char *const envp[]);
参考
プロセス起動でposix_spawnとかvforkとかを使うはなし - kubo39's blog
posix_spawn または posix_spawnp サブルーチン - IBM Documentation
posix_spawn(3) - Linux manual page
vfork(2) - Linux manual page
POS33-C. vfork() を使用しない
POS38-C. fork およびファイル記述子を使用するときには競合状態に注意する
#プロセス