15

15



Komunikacja między procesami w Unixie

Tabela 9.9. Zestawienie informacji o funkcji clnt_destroy

Pliki włączane

<rpc/rpc.h>

Rozdział

podręcznika

3N

Prototyp

void clnt_destroy(CLIENT *clnt);

Zwracana

Sukces

Niepowodzenie

Czy zmienia errno

wartość

Ł ^ % V -

Nie

Teraz możemy rozpocząć redagowanie programu f act_client. c oraz dodawanie odpowiedniego kodu do funkcji main pierwotnego przykładu fact. c. Zmodyfikowany program fact client. c pokazano na ilustracji 9.22. Zmieniło się wywołanie funkcji calc_fact w funkcji factorial_l.

Ilustracja 9.22. Szablon fact_client.c po modyfikacjach /*

*    Ten kod został wygenerowany przez rpcgen.

*    To tylko szablon, którego można używać jako

*    wzorca dla własnych funkcji.

Clude "fact.h" lUde' <unistd. h>..


long int

factorial_l(int calc_fac_l_arg,


char


/*

....... ^

*host)


dodai.e ze względu r.a exit , teraz zwraca long, a nie void*/


/* TO SAMO CO WCZEŚNIEJ */


........

return *result 1;

}

main (int argc, char *argv[ n ( char    *$Óst; ‘

/*.: ..... ^...........- >.. .

Tu można dodać własne deklaracje

łonij1 int % f_ńua(b? int    number;

if (argc < 2) {

printf("Składnia:    %s host_serwera\n", argv[0]);

exit(1);

) host = argv[l];


^ * ... \ ...: .

* .Ten kod pochodzi.z fopkcji main programu fact.c

printf ("Program do wyliczania silni\n");

- , printf ("Wpisz dodatnia liczbę całkowitą");

scanJ: (" %d" , Łnumbor); lf (nunter < 0)


m


- printfJa' nalegam, liczbę dodatnią!\n"); else if l(f numb - factorial 1(number, host)) > 0)


f* wygenerowanovsilnię


printf ("%d!    %d\n", numbei, 1 numb);

• else    -■■


printf(*Pzzcpzaszam, ale *d! to dla mnj^ za du7o!\n"


number);



Szablon serwera wygenerowany przez rpcgen pokazano na ilustracji 9.23.

Ilustracja 9.23. Szablon serwera, fact_server.c, wygenerowany przez program rpcgen

/*

*    Ten kod został wygenerowany przez rpcgen.

*    To tylko szablon, którego można używać jako

*    wzorca dla własnych funkcji.

*/

łinclude " fact. h'' long int    *

calc_fac_l_svc(int *argp, struct svc_req * rqstp) {

Static long int result;

/*

*    * tu można wstawić kod serwera */

long int    total = 1, last «! 0;

int    idx;

for <idx = *argp; idx - 1; -idx) { total *= idx;

if (total <“ last) (    /* Czy przekroczony zakres? */

result « 0; return (sresult);

1

last = total

)

result - total; return (sresult);

Podobnie jak w przypadku szablonu klienta, możemy teraz zmienić szablon serwera, włączając kod zdalnej procedury. Zmieniony plik f act_server. c pokazano na ilustracji 9.24.

Ilustracja 9.24. Szablon serwera, fact_server.c, po modyfikacjach

/*

*    Ten kod został wygenerowany przez rpcgen.

*    To tylko szablon, którego można używać jako

*    wzorca dla własnych funkcji.

*/

273


Wyszukiwarka

Podobne podstrony:
Komunikacja między procesami w UnUieTabela 9.10. Zestawienie informacji o funkcji rpc_broadcast Pl
Komunikacja między procesami w Unixiedo naszych badań wybierzemy tylko nieliczne. Zestawienie argume
Komunikacja między procesami w Unixie int * print_hello_l(void *argp, CLIENT *clnt) { static int
Komunikacja między procesami w Unixie (svc_req *) Client);    Wywołać funkcję
Komunikacja między procesami w Unixie_ ■    Jeżeli klient wysunie kilka identycznych
Komunikacja między procesami w Unixie powinno się używać w odniesieniu do poleceń, które nie prowadz
Komunikacja między procesami w Unixie i argv. W sekcji deklaracyjnej klienta rezerwowane jest miejsc
Komunikacja między procesami w Unixie Jeżeli proces zostanie uruchomiony lokalnie, zostanie również
Komunikacja między procesami w Unixie    _ rzone przez rpcgen. Plik f act_client. c t
Komunikacja między procesami w Unixie łinclude "fact.h" long
Komunikacja między procesami w Unixie morpheus % factclient morpheus Program do wyliczania silni&nbs
Komunikacja między procesami w Unixie typedef linę *line_ptr; /* wskaźnik na "dużo miejsca"
Komunikacja między procesami w Unixie jest ustawiany na 1 (TRUE). Jeżeli bufor wynikowy został wcześ
Komunikacja między procesami w Unixie_ if (rpc_stat != RPC_SUCCESS) if (rpc_stat !- RPC_TIM£DOUT) (
Komunikacja między procesami w Unlxle Funkcja rexec wymaga sześciu argumentów. Pierwszym jest wskaźn
IMAG0139 I l»TOTA ORGANIZACJI MIĘDZYNARODOWYCH PROCESÓW LOGISTYCZNYCH Istota głównych funkcji
image001 6. Uzupełnić tabelę nazwami mechanizmów komunikacji między procesami w taki sposób, żeby wł
DSC00273 (6) 6. Uzupełnić tabelę nazwami mechanizmów komunikacji między procesami w taki sposób, żeb
DSC00277 (9) 6. Uzupełnić tabelę nazwami mechanizmów komunikacji między procesami w taki sposób, żeb

więcej podobnych podstron