2010-10-27 11 views

Respuesta

16

Una rutina de stub puede ser una de (al menos) dos cosas.


primer lugar, puede ser una rutina lugar-titular de la cual se desarrolla rápidamente para poner a prueba una rutina de nivel superior, con la intención de sustituir una versión real más adelante. Esto se utiliza normalmente con el desarrollo de arriba hacia abajo (codificación de los niveles más altos primero y luego su forma de trabajo hasta las cosas más detallada) y puede ser tan simple como:

int getCount (void) { return 7; } // just return fixed value for testing. 

o un poco más complejo:

// Cycle through values for some variety. 
int getCount (void) { 
    int retvals[] = {2,7,1,8,2,8,1,8,2,8,4,5,9}; 
    static int pos = -1; 
    pos = (pos + 1) % (sizeof (retvals)/sizeof (*retvals)); 
    return retvals[pos]; 
} 

por supuesto, una vez que el talón consigue bastante compleja, es posible que también acaba de poner en práctica la cosa real :-)


en segundo lugar, se utiliza comúnmente en la llamada a procedimiento remoto biente (RPC) ents. Un talón se utiliza para ordenar los datos en un extremo y comunicarlos a un servidor en el otro extremo.

RPC necesita crear funciones auxiliares para el cliente y un servidor. Es muy similar a un prototipo de función en C, pero el resultado final es un poco diferente, como por ejemplo:

+----------------+ 
| Client   | 
| +----------+ | +---------------+ 
| | main | | | Server  | 
| |----------| | | +----------+ | 
| | stub_cli |------->| stub_svr | | 
| +----------+ | | |----------| | 
+----------------+ | | function | | 
        | +----------+ | 
        +---------------+ 

En este ejemplo, en lugar de llamar function en el mismo programa main, llama a una función de resguardo del cliente (con el mismo prototipo como function) que es responsable de empaquetar la información y pasarla a otro proceso. Esta puede ser la misma máquina o una máquina diferente, realmente no importa: una de las ventajas de RPC es poder mover los servidores a voluntad.

En el servidor, hay un proceso de "escucha" que recibirá esa información y la pasará al servidor. El código auxiliar del servidor recibe la información, la desempaqueta y la pasa a la función real.

La función real hace lo que necesita y regresa al código auxiliar del servidor que puede empaquetar la información de retorno y devolverla al talón del cliente.

El apéndice del cliente lo descomprime y lo devuelve al main.

+0

Respuesta impresionante, gracias a un grupo :) –

7

Es una función con la misma firma que la función real, pero no hace nada, y puede compilarse y ejecutarse exactamente como en la realidad. p.ej.

int MyStub(char * str) 
{ 
    /* Stub - Does Nothing */ 

    return 0; 
} 

A menudo se utilizan como marcadores de posición, para que la estructura general del programa se pueda resolver primero, y luego los detalles.

0

En lenguaje C, el código auxiliar en realidad llama al main(), no al sistema operativo ni al compilador.

+0

¿Quisiste decir? Código de inicio? No he escuchado que se use el código auxiliar en ese contexto. – paxdiablo

Cuestiones relacionadas