지금 서버를 짜고있는데요 어느 특정한시간에 함수를 호출할려고 하거든요 어떻게 처리해야 하는지 궁금하네요 세마포어 로 해서 하고있는데 이걸루 하는것이 맞는지 궁금하네요;;
님께서 말씀하신 "특정한시간" 요것에 대한 추가정보가 필요 합니다..
초단위의 정확도 인지.. timer 처럼 반복되는 형태인지...
울랄라~ 호기심 천국~!!http://www.ezdoum.com
하루에 한번 실행되도록 해야하거든요
예를 들어 하루에 12시 정각에 한번 호출하여 작업을 해야 하는데 방법을 잘모를겠네요.
int main() { int server_sockfd, client_sockfd; //socket 번호 int server_len, client_len; //socket 길이 int i,result,file_result; fd_set readfds, bugs_avatafds; sigset_t mask; //signal 처리 구조체 변수 선언 pthread_t a_thread; //thread 형 변수 void *thread_result; //thread 함수의 리턴값을 저장할 변수(이 프로그램에서는 의미없음) struct sockaddr_in server_address; // socket 구조체 선언 struct sockaddr_in client_address; server_sockfd = socket(AF_INET, SOCK_STREAM, 0); // 소켓지시자 생성 server_address.sin_family = AF_INET; // 인터넷 소켓 server_address.sin_addr.s_addr = htonl(INADDR_ANY); // 서버 어드레스 생성 server_address.sin_port = htons(PORT); // 서비스 포트번호 생성 server_len = sizeof(server_address); // 소켓 크기 bind(server_sockfd,(struct sockaddr *)&server_address, server_len); // 소켓을 정의했고 정의된 정보로 묶는 작업 listen(server_sockfd, 5); // 대기상태가 된다. FD_ZERO(&readfds); //server_sockfd의 입력을 다루기 위해 readfds를 초기화한다. FD_SET(server_sockfd, &readfds); log("Bugs Avata Ting SK-VM server waiting"); //log파일로 서버가 시작된 시간을 남긴다. printf("Bugs Avata Ting SK-VM server waiting\n"); signal_prepare(); //signal 처리 my_signal_masking(&mask); //mask를 이용하여 필요한 signal만 처리하고 싶으면 처리한다. // 무한루프를 돌면서 통신을 수행하고 클라이언트에 맞는 서비스를 제공한다. while(1){ char ch; int fd; int nread; bugs_avatafds = readfds; //클라이언트의 요청을 기다린다. result = select(FD_SETSIZE, &bugs_avatafds, (fd_set *)0, (fd_set *)0, (struct timeval *) 0); //에러가 있으면 에레메세지 띄우고 실행 종료하라. if(result < 1) { perror("bugs_avata_server"); exit(1); } //동작이 있다는 것을 안다면 FD_ISSET을 사용하여 차례대로 확인하면 동작이 존재하는 //기술자(dedataor) 를 찾는다. for(fd = 0; fd < FD_SETSIZE; fd++) { if(FD_ISSET(fd,&bugs_avatafds)) { //만약 server_sockfd에서 동작이 있었다면 세로운 접속을 위한 요청이므로, decdataor 모음에 //관련 client_sockfd를 추가한다. if(fd == server_sockfd) { client_sockfd = accept(server_sockfd, (struct sockaddr *)&client_address, &client_len); FD_SET(client_sockfd, &readfds); printf("fd %d 클라이언트 추가\n", client_sockfd); } //클라이언트 동작 else { ioctl(fd, FIONREAD, &nread); //close를 수행했다면 클라이언트는 제거되었으므로 이것을 dedataor 모음에서 제거 if(nread == 0) { close(fd); FD_CLR(fd, &readfds); printf("fd %d에 클라이언트 제거\n", fd); if(fd==us.fd) { // ClearFile(&us); } //printf("fd %d 클라이언트 제거\n", fd); } // VM 서비스 처리 else { printf("fd %d에게 서비스 제공\n", fd); bugs_avata_service(fd,&readfds); //exit(0); }//else }//else }//if }//for }//while return 0; }//main
메인부분인데요 저기 BugsServer() 이함수내에서 받은 메세지를 처리하는 부분이고요 제가 할려는것이 지금 mysql에서 하루에 한번 디비를 업데이트 해줘야하거든요 그래서 그것을 물어볼려구 염..
스레드를 쓰면댄다고 하는거 같은데 어떤식으로 처리해야하는지 잘모르겠네요.
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
님께서 말씀하신 "특정한시간" 요것에 대한추가정보가 필요 합니다..
님께서 말씀하신 "특정한시간" 요것에 대한
추가정보가 필요 합니다..
초단위의 정확도 인지..
timer 처럼 반복되는 형태인지...
울랄라~ 호기심 천국~!!
http://www.ezdoum.com
하루에 한번 실행되도록 해야하거든요예를 들어 하루에 12시 정각에
하루에 한번 실행되도록 해야하거든요
예를 들어 하루에 12시 정각에 한번 호출하여 작업을 해야 하는데 방법을 잘모를겠네요.
[code]int main(){ int server_sockfd,
메인부분인데요
저기 BugsServer() 이함수내에서 받은 메세지를 처리하는 부분이고요
제가 할려는것이 지금 mysql에서 하루에 한번 디비를 업데이트 해줘야하거든요
그래서 그것을 물어볼려구 염..
스레드를 쓰면댄다고 하는거 같은데
어떤식으로 처리해야하는지 잘모르겠네요.
댓글 달기