このプログラムは、親プロセスで文を取得し、子プロセスで大文字で出力します。子供には親を待ってもらいたい。子プロセスを待機させるために sleep() を使用しました。親を待つように子を作る方法はありますか? signal() で実装できますか? 前もって感謝します!!!
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/wait.h>
#include<sys/ipc.h>
#include<sys/shm.h>
#include<ctype.h>
#define size 50
main()
{
int pid,shmid,i,key=1234;
char *name,*shmaddr;
if((shmid=shmget(key,size,IPC_CREAT | 0666)) < 0)
{
perror("shmget():");
exit(1);
}
pid=fork();
if(pid < 0)
{
perror("fork():");
exit(1);
}
else if(pid == 0)
{
sleep(5); //making child to wait for parent
printf("\t\tCHILD\n\n");
if((shmaddr=shmat(shmid,NULL,0)) == (char*) -1)
{
perror("shmat():");
exit(1);
}
name=shmaddr;
i=0;
while(name[i]!='\0')
{
printf("%c",toupper(name[i]));
i++;
}
shmdt(shmaddr);
printf("\n");
exit(0);
}
else
{
printf("\t\tPARENT\n\n");
if((shmaddr=shmat(shmid,NULL,0)) == (char*) -1)
{
perror("shmat():");
exit(1);
}
name=shmaddr;
i=0;
while((name[i]=getchar()) != '\n')
i++;
name[i]='\0';
shmdt(shmaddr);
wait(NULL);
}
}