1.マルチプロセス同時実行


テーマ:プログラムを作成してfork()を利用して2つのプロセスを生成して、まず2つのサブプロセスと親プロセスのプロセス識別子を表示して、それから、親プロセスに1-26の数字を表示させて、サブプロセス1は26の大文字を表示して、サブプロセス2は26の小文字を表示します.大文字と小文字を交互に出力します.
#include<stdio.h>
#include<string.h>
#include<unistd.h>
int main()
{
	int p1, p2;
	int i = 1;
	char ch1 = 'A', ch2 = 'a';
	while((p1 = fork()) == -1);
	if(p1)
	{
		while((p2 = fork()) == -1);
		if(p2)
		{
			//parent;
			printf("This is parent process, pid = %d
", getpid()); while(i <= 26) { printf("Parent process print : %d
", i); i = i + 1; sleep(1); } } else { //child2 printf("This is child process2, pid = %d
", getpid()); while(ch2 <= 'z') { printf("Child process2 print : %c
", ch2); ch2 = ch2 + 1; sleep(1); } } }//if else { //child1 printf("This is child process1, pid = %d
", getpid()); while(ch1 <= 'Z') { printf("Child process1 print : %c
", ch1); ch1 = ch1 + 1; sleep(1); } }//else return 0; }

2つのサブプロセスの混在出力が終了すると、親プロセスの出力が開始されるようにプログラムを変更します.
#include<stdio.h>
#include<string.h>
#include<unistd.h>
int main()
{
	int p1, p2;
	int i = 1;
	char ch1 = 'A', ch2 = 'a';
	while((p1 = fork()) == -1);
	if(p1)
	{
		while((p2 = fork()) == -1);
		if(p2)
		{
			//parent;
			printf("This is parent process, pid = %d
", getpid()); wait(0);// wait(0);// while(i <= 26) { printf("Parent process print : %d
", i); i = i + 1; sleep(1); } } else { //child2 printf("This is child process2, pid = %d
", getpid()); while(ch2 <= 'z') { printf("Child process2 print : %c
", ch2); ch2 = ch2 + 1; sleep(1); } } }//if else { //child1 printf("This is child process1, pid = %d
", getpid()); while(ch1 <= 'Z') { printf("Child process1 print : %c
", ch1); ch1 = ch1 + 1; sleep(1); } }//else return 0; }