私はパイプにもっと取り組んできましたが、パイプを使用して同じプロセスで読み書きする方法があるかどうか疑問に思っていました。これが私のコードです:
// Creates 2 pipes per child
for (i=0; i<atoi(argv[1]); i++) {
pipe(fd[i]);
}
for(i = 0; i < atoi(argv[1]); i++) {
pid = fork();
//pipe(fd);
int r[2];
int check=0;
srand(getpid());
int** Board=build_board(width);
if(pid < 0) {
printf("Error");
exit(1);
} else if (pid == 0) {
printf("Child (%d): %d\n", i + 1, getpid());
// srand(getpid());
makeMove(Board, 2,r);
printf("Child R: %d:%d\n", r[0],r[1]);
display(Board, width, width);
close(fd[i][0]);
write(fd[i][1], r, sizeof(r));
// play(Board);
exit(0);
} else {
printf("Parent (%d): %d\n", i + 1, getpid());
while (1) {
if (check==0) {
close(fd[i][1]);
read(fd[i][0], readbuffer, sizeof(readbuffer));
printf("Received string: %d:%d\n", readbuffer[0], readbuffer[1]);
Board[readbuffer[0]][readbuffer[1]]=2;
puts("Fixed Board");
display(Board, width, width);
check=checkVictory(Board);
if (check!=0) {
puts("Winner");
display(Board, width, width);
break;
}
//srand(getpid());
AI_move(Board,1,2);
display(Board, width, width);
}
}
wait(NULL);
}
}
私は2つのプロセス間で移動を行ったり来たりしようとしていますが、私が持っているコードでは、子から最初の移動を取得し、親は勝つまで移動します。親が移動した後、子に返信する必要があると思いますが、子プロセスの上部でその機能を閉じます。勝者が見つかるまで、そして勝者が退場するまで、どのように私と私はお互いにコミュニケーションをとっていますか。
出力例を次に示します。
Parent (1): 17291
Child (1): 17293
Child laced peice at: 7,3
Child R: 7:3
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - B - - - -
Received string: 7:3
Fixed Board
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - B - - - -
Parent placed peice at: 7,5
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - B - R - -
Received string: 7:3
Fixed Board
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - B - R - -
Parent placed peice at: 6,5
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - R - -
- - - B - R - -
Received string: 7:3
Fixed Board
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - R - -
- - - B - R - -
Parent placed peice at: 7,4
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - R - -
- - - B R R - -
Received string: 7:3
Fixed Board
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - R - -
- - - B R R - -
Parent placed peice at: 7,0
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - R - -
R - - B R R - -
Received string: 7:3
Fixed Board
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - R - -
R - - B R R - -
Parent placed peice at: 7,2
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - R - -
R - R B R R - -
Received string: 7:3
Fixed Board
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - R - -
R - R B R R - -
Parent placed peice at: 6,2
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - R - - R - -
R - R B R R - -
Received string: 7:3
Fixed Board
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - R - - R - -
R - R B R R - -
Parent placed peice at: 5,5
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - R - -
- - R - - R - -
R - R B R R - -
Received string: 7:3
Fixed Board
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - R - -
- - R - - R - -
R - R B R R - -
Parent placed peice at: 4,5
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - R - -
- - - - - R - -
- - R - - R - -
R - R B R R - -
Received string: 7:3
Fixed Board
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - R - -
- - - - - R - -
- - R - - R - -
R - R B R R - -
Winner
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - R - -
- - - - - R - -
- - R - - R - -
R - R B R R - -