체스를 두는 프로그램이 두 개 있다고 가정해 chess_1
보겠습니다 chess_2
. 그들은 보드 자체를 추적하고 반대 움직임을 입력으로 받아들인 다음 자신의 움직임을 출력합니다. 예를 들어 와 일치시키려면 chess_1
다음을 수행합니다.
프로그램을 시작하겠습니다(내가 백인이라고 가정)
$ ./chess_1 # program starts and hangs for input
<my move> # my input
<the bot's move> # bot output
<my next move> # my input
.... < etc. > .....
로봇은 게임 보드를 추적합니다. 제 질문은 이 문제와 어떻게 chess_1
싸울 수 있느냐는 것입니다 chess_2
.
답변1
쉘을 지정하지 않았으므로 일반적으로 명명된 파이프가 가장 쉬운 방법입니다. 그러나 쉘이 이를 지원한다면 이는 코프로세스의 좋은 사용 사례가 될 수 있습니다.
Bash에서 coproc 명령을 사용하는 방법은 무엇입니까?
에서는 데이터를 공급
a | cmd | b
하고 출력을 읽습니다 . 코프로세스로 실행하면 쉘 이 .a
cmd
b
cmd
a
b
배쉬에서:
coproc ./chess_1
./chess_2 < "${COPROC[0]}" > "${COPROC[1]}"
링크된 게시물에서는 보조 프로세스의 단점에 대해서도 설명하고 명명된 파이프(를 통해)를 사용하는 예를 제공합니다 mkfifo
.