スポンサーリンク

このドキュメントの内容は、以下の通りです。

はじめに

LinuxやFreeBSDなどのunix系のオペレーティングシステムで新しいプロセスを作成する場合には、fork()システムコールを使用します。fork()を使用すると現在のプロセスのコピーが作成されます。コピー元を親プロセス(parent process)、fork()で作られたプロセスを子プロセス(child process)と呼ばれます。

子プロセスは、ユニークなプロセスIDを持ちます。
子プロセスは、親プロセスのプロセスIDとは違うプロセスIDを持ちます。
子プロセスは、親プロセスのディスクリプタのコピーを持ちます。

書式

forkシステムコールの書式は以下の通りです。
#include <sys/types.h>
#include <unistd.h>

pid_t
fork(void);

戻り値


戻り値 説明
-1 子プロセスが作成できなかった。
0 そのプロセスが子プロセスであること意味します。
1以上 そのプロセスが親プロセスであることを意味し、子プロセスのPIDが返ります。

サンプルコード fork.c


#include <stdio.h>
#include <stdlib.h>	// exit

#include <sys/types.h>	// fork
#include <unistd.h>	// fork

#include <err.h>	// err

int
main(int argc, char *argv[])
{
	pid_t	pid;

	pid = fork ();

	if (-1 == pid)
	{
		err (EXIT_FAILURE, "can not fork");
	}
	else if (0 == pid)
	{
		// child
		puts ("child");
	}
	else
	{
		// parent
		puts ("parents");
	}

	exit (EXIT_SUCCESS);
}



コンパイル方法

コンパイル方法は、以下の通りです。
cc fork.c

実行

実行方法は、以下の通りです。
% ./a.out
parents
child
参照しているページ (サイト内): [2008-06-17-2] [2007-12-23-2] [2007-12-23-1]

スポンサーリンク
スポンサーリンク
 
いつもシェア、ありがとうございます!


もっと情報を探しませんか?

関連記事

最近の記事

人気のページ

スポンサーリンク
 

過去ログ

2020 : 01 02 03 04 05 06 07 08 09 10 11 12
2019 : 01 02 03 04 05 06 07 08 09 10 11 12
2018 : 01 02 03 04 05 06 07 08 09 10 11 12
2017 : 01 02 03 04 05 06 07 08 09 10 11 12
2016 : 01 02 03 04 05 06 07 08 09 10 11 12
2015 : 01 02 03 04 05 06 07 08 09 10 11 12
2014 : 01 02 03 04 05 06 07 08 09 10 11 12
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12

サイト

Vim入門

C言語入門

C++入門

JavaScript/Node.js入門

Python入門

FreeBSD入門

Ubuntu入門

セキュリティ入門

パソコン自作入門

ブログ

トップ


プライバシーポリシー