C で親子プロセスを作成していますが、これらのプロセスは文字の配列を共有メモリとして使用しており、この順序で実行したいと考えています。
親->子->親->子->親->子
....など、私はWait(NULL)
親で使用していますが、実行は次の順序で行われます親→子→親→親→親 ....
私はセマフォなしでこれをやろうとしていますが、それ以外はまだ初心者の Linux プログラマーです。int main(void)
{
if (fork( ) == 0)
{ //child
if( (id = shmget(key, sizeof(char[n]), 0)) == -1 )
{
exit(1);
}
shm = shmat(id, 0, 0);
if (shm == (char *) -1)
exit(2);
.......................//some work
..........................
}
else //parent
{
if( (id = shmget(key, sizeof(char[n]), 0666 | IPC_CREAT)) == -1 )
{
exit(1);
}
shm = shmat(id, 0, 0); //attach shared memory to pointer
if (shm == (char *) -1)
exit(2); //error while atatching
....
.....
do
{
//parent turn here
wait(NULL);
....................................
//some work ..................
}
while(done!=1);
shmdt(NULL);
if( shmctl(id, IPC_RMID, NULL) == -1 )//delete the shared memory
{
perror("shmctl");
exit(-1);
}
}
exit(0);
}