1.マルチプロセス同時実行
2149 ワード
テーマ:プログラムを作成してfork()を利用して2つのプロセスを生成して、まず2つのサブプロセスと親プロセスのプロセス識別子を表示して、それから、親プロセスに1-26の数字を表示させて、サブプロセス1は26の大文字を表示して、サブプロセス2は26の小文字を表示します.大文字と小文字を交互に出力します.
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());
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;
}