매우 간단한 IRC 봇을 C로 작성했습니다. 실행하면 연결이 설정되고 지정된 채널이 조인됩니다. 모든 연결 세부 정보는 하드 코딩되어 있지만 이는 문제가되지 않습니다.백그라운드에서 실행중인 다른 스레드가있는 IRC 봇의 기본 셸을 만들려면
기본 셸을 동시에 실행해야합니다. 즉 현재 IRC 채널에서 텍스트를 받아야하고 루프가 백그라운드에서 스레드에서 실행되고 있음을 의미합니다. 이 셸에서 IRC 채널에 메시지를 보낼 수있는 명령을 실행하거나 프로그램을 정상적으로 종료 할 수 있기를 원합니다 (두 스레드를 모두 닫아야 함을 의미 함). 이 셸은 어떤 종류의 작업 제어 셸도위한 것이 아닙니다.
이 봇의 주요 포인트는 게시 된 URL에 대한 채널을 모니터링하고 SQLite 데이터베이스에 저장하는 것입니다. 그러면 IRC 채널에있는 사람들은 데이터베이스에서 특정 URL을 검색 할 수 있습니다. 또한 검색과 같은 쉘에서 다양한 데이터베이스 명령을 수행 할 수 있기를 원합니다. 수동 삽입 및 삭제도 가능합니다. 모든 데이터베이스 액세스가 스레드로부터 안전한지 확인해야한다고 가정하기 때문에이를 언급합니다. 또한, 이상적으로, 나는 데이터베이스에 대한 삽입을 검색보다 우선 순위를 선호하지만 이것은 실질적으로 나의 요구 사항 목록에 있습니다.
마지막으로 IRC 채널에서받은 일부 명령이 자체 스레드로 생성 될 수 있습니다. 이는 데이터베이스에 액세스하고 있기 때문에 순간적으로 발생하지 않을 가능성이 있지만, 일정 기간 동안 스레드를 차단하여 채널로 전송되는 메시지를 비틀어 버리는 방법을 호출하고 있기 때문일 수 있습니다. 나는이 프로그램의 이러한 종류의 설정에 대한 이동 어떻게
- 을 :
이것은 내가 부탁 해요 무엇인가? 한 번에 두 개의 주 스레드를 실행하고 둘 사이에서 잠재적으로 메시지를 전달하려면 어떤 종류의 구조가 필요합니까?
- IRC 채널과의 통신에 사용되는 소켓에 대한 액세스가 스레드로부터 안전해야합니까?
- 프로그램을 스레드로부터 보호하려면 어떻게해야합니까? 뮤텍스가 충분합니까?
중요하다면 프로그램은 거의 확실하게 우분투 서버 배포판에서 실행될 것입니다.