performance/socketlocal.c

///////////////////////////////////////////////////////////////////////////////
// Filename: socketlocal.c
///////////////////////////////////////////////////////////////////////////////
// Purpose: test the performance of local sockets via socketpair()
///////////////////////////////////////////////////////////////////////////////
// History:
// ========
//
// Date     Time     Name      Description   
// -------- -------- --------  ------------------------------------------------
// 96/02/29 05:54:20 muellerg: created
//
///////////////////////////////////////////////////////////////////////////////


// Feature test switches ///////////////////////////// Feature test switches //
    /* NONE */



// System headers /////////////////////////////////////////// System headers //

#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>


// Local headers ///////////////////////////////////////////// Local headers //

#include "../common.h"



// Macros /////////////////////////////////////////////////////////// Macros //
    /* NONE */



// File scope objects /////////////////////////////////// File scope objects //
    /* NONE */



// External variables, functions, and classes ///////////// External objects //
    /* NONE */



// Signal catching functions ///////////////////// Signal catching functions //
    /* NONE */



// Structures, unions, and class definitions /////////////////// Definitions //
    /* NONE */



// Functions and class implementation /// Functions and class implementation //
    /* NONE */



// Main /////////////////////////////////////////////////////////////// Main //

int
main(int argc, char *argv[])
{
    error.set_program_name(argv[0]);    

    pid_t parent = getpid();
    pid_t child;

    // esablish signal handler
    synchronization_init();

    // open connection

    int socketdes[2];

              // namespace, style,       protocol, filedes
    if( socketpair(AF_UNIX, SOCK_STREAM, 0       , socketdes) == -1)
        error.system("socketpair() error");

    if( (child = fork() ) < 0)
        error.system("fork error");

    if(child == 0)
    {
        // child

        readdata(argv[0], "read", socketdes[0], parent);    // synchronized
        readdata(argv[0], "read2", socketdes[0], 0);        // unsynchronized
    }
    else
    {
        // parent

        writedata(argv[0], "write", socketdes[1], child);   // synchronized
        writedata(argv[0], "write2", socketdes[1], 0);      // unsynchronized
    }

    return(EXIT_SUCCESS);
}