첫 번째 실행이 완료된 후 즉시 동일한 스크립트를 실행하는 데 문제가 있습니다. 스크립트는 다음과 같습니다.
#!/bin/bash
./program1 &
./program2 &
./program3
wait
즉, 내부적으로 세 개의 C++ 프로그램이 동시에 실행되어야 하며 쌍을 이루는 소켓 연결을 통해 서로 통신합니다. 처음 실행하면 모든 것이 잘 작동합니다. 그러나 첫 번째 스크립트 이후에 스크립트를 다시 실행하면 전혀 작동하지 않습니다. 오류도 발생하지 않았습니다. 잠시 기다렸다가 다시 실행해 보면 다시 잘 작동됩니다. 이 동작의 근본 원인을 파악할 수 없습니다. 이해하는데 도움을 주시면 기쁘겠습니다.
답변1
설명하신 내용은 C++ 프로그램에 문제가 있음을 나타내는 것 같습니다. 여러 인스턴스가 실행 중일 때 통신할 올바른 프로세스를 찾을 수 없습니다. 이는 "첫 번째 스크립트 이후"에 스크립트를 다시 실행할 때만 실패하는 이유와 조금 기다렸다가 다시 시도하면 제대로 작동하는 이유를 설명합니다.
아마도 처음 다시 실행하려고 할 때 C++ 프로그램이 여전히 실행 중이어서 문제가 발생하고, 시작 사이에 조금 기다리면 프로그램이 끝나서 예상대로 작동하는 것입니다.