예제 #1
0
파일: shmctl.c 프로젝트: ptt/pttbbs
int main(int argc, char **argv)
{
    int     i = 0;
	
    chdir(BBSHOME);
    initsetproctitle(argc, argv, environ);
    if( argc >= 2 ){
	if( strcmp(argv[1], "init") == 0 ){
	    /* in this case, do NOT run attach_SHM here.
	       because uhash_loader is not run yet.      */
	    return SHMinit(argc - 1, &argv[1]);
	}

	attach_SHM();
	/* shmctl doesn't need resolve_boards() first */
	//resolve_boards();
	resolve_garbage();
	resolve_fcache();
	for( i = 0 ; cmd[i].func != NULL ; ++i )
	    if( strcmp(cmd[i].cmd, argv[1]) == 0 ){
		return cmd[i].func(argc - 1, &argv[1]);
	    }
    }
    if( argc == 1 || cmd[i].func == NULL ){
	/* usage */
	printf("usage: shmctl [command] [options]\n");
	printf("commands:\n");
	for( i = 0 ; cmd[i].func != NULL ; ++i )
	    printf("\t%-15s%s\n", cmd[i].cmd, cmd[i].descript);
    }
    return 0;
}
예제 #2
0
int main( int argc, char *argv[] ) {
    SHM = &shared;

    srand(time(NULL));
    signal(SIGINT, forceQuit);

    int socketfd = socket(PF_INET, SOCK_STREAM, 0), // SCKDGRAM - UDP, STREAM - TCP
        port;

    char *port_garbage = NULL;

    if (argc < 2) {
        printf("Usage: ./serwer [port]\n");
        exit(0);
    } else {
        port = strtol(argv[1], &port_garbage, 10);;
        if (*port_garbage || port <= 0) {
            perror("Wrong port number. ");
            exit(0);
        }
    }
    SHMinit(rand() % 1000);
    CHATprepareMainRoom();
    if (socketfd > 0) {
        struct sockaddr_in my_addr;
        my_addr.sin_family = PF_INET;
        my_addr.sin_addr.s_addr = INADDR_ANY;
        my_addr.sin_port = htons(port);

        if (bind(socketfd, (struct sockaddr *)&my_addr, sizeof(my_addr)) >= 0) {
            if (!listen(socketfd, 10)) {  // return 0 if successful
                printf("Running on %d\n\n", port);
                acceptConnection(&socketfd);
            } else {
                perror("Listening error: ");
                logEvent("Listening error. ");
                exit(0);
            }
        } else {
            perror("Binding error: ");
            logEvent("Binding error.");
            exit(0);
        }
    } else {
        perror("Error creating a socket: ");
        logEvent("Error creating a socket:");
        exit(0);
    }
    SHMdestroy();
    close(socketfd);
    return 0;
}