why my swap getting bigger?(source included)

why my swap getting bigger?(source included)

Post by Danu Kusman » Sun, 05 Nov 2000 04:00:00



[ multi.c 2K ]
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/wait.h>
#include <netinet/in.h>
#include <netdb.h>
#include <stdlib.h>
#include <mysql.h>
#include <signal.h>

#define SERVER_PORT 5656
#define MAX_PENDING 5
#define MAX_LINE    256
#define MAX_KOLOM   16

MYSQL mysql;
MYSQL_RES *res;
MYSQL_ROW row;

void exiterr(int exitcode) {
        fprintf(stderr,"%s\n", mysql_error(&mysql));
        exit(exitcode);

Quote:}

/*void sig_chld(int signo){
        pid_t   pid;
        int     stat;

        while ( (pid = waitpid(-1, &stat, WNOHANG) ) > 0)
                printf("child %d terminated\n", pid);
        return;

Quote:}*/

int
main()
{
    uint i = 0;
    uint d = 0;
    uint e = 1;
    int kolom;
    struct sockaddr_in sin;
    char buf[MAX_LINE];
    int len;
    int serverSocket, clientSocket;
    //void sig_chld(int);
    //pid_t childpid;

    /* build address data structure */
    bzero((char *)&sin, sizeof(sin));
    sin.sin_family = AF_INET;
    sin.sin_addr.s_addr = INADDR_ANY;
    sin.sin_port = htons(SERVER_PORT);

        if (!(mysql_connect(&mysql,"host","user","")))
                exiterr(1);

        if (mysql_select_db(&mysql,"data"))
                exiterr(2);
    /* setup passive open */
    if ((serverSocket = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
        perror("server: socket");
        exit(1);
    }
        printf("SUKSES 1");

    if ((bind(serverSocket, (struct sockaddr *)&sin, sizeof(sin))) < 0) {
        perror("server: bind");
        exit(1);
    }
    listen(serverSocket, MAX_PENDING);
    //signal (SIGCHLD, sig_chld);

    /* wait for connection, then receive and print text */
    while (1) {
        if ((clientSocket = accept(serverSocket,
                                   (struct sockaddr *)&sin, &len)) < 0) {
            perror("server: accept");
            exit(1);
        }
        if (fork() == 0) {  /* child process */
                close (serverSocket);  /* child does not need it  */
                while (len = recv(clientSocket, buf, sizeof(buf), 0)) {
                        if (mysql_query(&mysql,"SELECT * FROM Table"))
                                exiterr(3);

                        if (!(res = mysql_store_result(&mysql)))
                                exiterr(4);

                        while((row = mysql_fetch_row(res))) {
                                strcpy(buf,"");
                                kolom = 0;
                                for (i = 0; i < mysql_num_fields(res); i++) {
                                        sprintf(buf,"%s|%s",buf,row[i]);
                                        kolom++;
                                        if (kolom == MAX_KOLOM) {
                                                sprintf(buf,"%s\n",buf);
                                                kolom = 0;
                                                buf[MAX_LINE-1] = 0;
                                                len = strlen(buf) + 1;
                                                send(clientSocket, buf, len, 0);
                                                recv(clientSocket, buf, sizeof(buf), 0);
                                                strcpy(buf,"");
                                        }
                                }
                        }
                        strcpy(buf,"\n");
                        buf[MAX_LINE-1] = 0;
                        len = strlen(buf) + 1;
                        send(clientSocket, buf, len, 0);
                }
                close(clientSocket);
        } //if fork
    }

Quote:}

 
 
 

why my swap getting bigger?(source included)

Post by David Schwart » Sun, 05 Nov 2000 04:00:00


        I don't understand what your question is, but your program needs to
close the newly accepted socket in the parent.

        DS