Witam!
Napisałem właśnie program - daemona, który co 10 minut budzi się i wykonuje swoje zadania.
while (1) {
/***************************
* jakieś operacje *
***************************/
sleep(600);
}
I teraz chciałbym rozbudować program o jedną właściwość - możliwość odpytywania daemona o wynik ostatnio przeprowadzonej operacji w każdej chwili. Chciałbym to zrobić przez sockety, np. tak:
int sockfd, newsockfd, portno, clilen, n;
char buffer[256];
struct sockaddr_in serv_addr, cli_addr;
sockfd = socket(AF_INET, SOCK_STREAM, 0);
bzero((char *) &serv_addr, sizeof(serv_addr));
portno = [numer_portu]
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(portno);
serv_addr.sin_addr.s_addr = INADDR_ANY;
if (bind(sockfd, (struct sockaddr *) &serv_addr,sizeof(serv_addr)) < 0) error("ERROR on binding");
listen(sockfd,5);
clilen = sizeof(cli_addr);
newsockfd = accept(sockfd, (struct sockaddr *) &cli_addr, &clilen);
bzero(buffer,256);
n = read(newsockfd,buffer,255);
//............. itd.
Ale oczywiście program po wpleceniu tego kodu będzie czekał na połączenie z klientem. Jak powinienem to zrobić, aby daemon mógł odpowiedzieć w każdej chwili, wykonując swoje zaplanowane zadania, a także jak 'śpi'?
z góry dzięki
pozdrawiam
herszt