fai una prova anche così

codice:
   if (pid == -1) {
	/* La chiamata fork() e' fallita */
	fprintf( stderr, "%s: La fork ha fallito\n", strerror(errno));
	exit ( EXIT_FAILURE );
    } else if (pid == 0) {

	/* Questo e' il processo figlio */

        static char *argv[2] ;
        static arg0[] = "mio_client";
        static unsigned long address = il_mio_indirizzo;

        argv[0] = arg0;
        argv[1] = ( char * ) &address;
        argv[2] = NULL;


        execv( "/dove_si_trova/mio_client",  argv);
	/* 
	 * Se il controllo e' giunto qui allora si e' verificato
	 * un errore nella chiamata execv().  
	 */
	fprintf( stderr, "%s: execv()\n", strerror(errno) );
    } else {
	/* Questo e' il processo padre */
   }
sul client dereferenzi

unsigned long mio_indirizzo = * ( ( unsigned long * ) argv[1] ) ;