저는 3개의 프로그램, 서버 및 두 개의 서로 다른 클라이언트의 상호 작용을 포함하는 네트워크 프로젝트를 디버깅하고 있습니다. 하지만 디버깅을 위해 시작하고 중지하는 것이 어렵다는 것을 알았습니다. 지금까지 시도한 몇 가지 사항은 다음과 같습니다.
3개의 터미널을 시작합니다. 달리기
./server
,./client1
,./client2
. 이 접근 방식의 문제점은 창 사이를 앞뒤로 전환해야 한다는 것입니다.1개의 터미널을 시작합니다. 다음을 스크립트에 넣으십시오:
./server &;./client1 &;./client2 &
.스크립트를 실행하십시오. 이 접근 방식의 문제점은 디버깅 후 프로세스를 종료하기 어렵다는 것입니다. PID를 찾아 입력해야 합니다kill <PID>
.
더 좋은 방법이 있나요? 이 상황에서 사람들은 일반적으로 어떻게 디버깅합니까?
답변1
시작 스크립트로 다음과 같은 것을 넣으십시오.
./server & server_pid=$!
./client1 & client1_pid=$!
./client2 & client2_pid=$!
echo 'kill "$@"' "$server_pid $client1_pid $client2_pid" >.kill.sh
./kill.sh
모든 프로세스를 종료하도록 호출합니다 . 핵심은 $!
마지막 백그라운드 명령의 PID를 검색하는 것입니다. 이를 저장하고 나중에 사용하려면 다른 방법을 선호할 수 있습니다.