Visualizzazione dei risultati da 1 a 7 su 7

Discussione: [C] da argv[] a stdin

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    57

    [Risolto][C] da argv[] a stdin

    ciao a tutti ho un problema su questo scenario,

    echo_sel_client
    codice:
    #include	"basic.h"
    #include	"echo_client.h"
    
    int main(int argc, char **argv)
    .....
    .....
    ....
    una serie di operazioni
    ..
    poi ho 
    str_clisel_echo(stdin, sockd);
    
       exit(0);
    }
    da linea di comando passo 3 parametri mi interessa il 3 cioè argv[2], che è sempre un intero, a questo punto nella funzione str_clisel_echo invece di passargli stdin e sockd vorrei passargli argv[2] e sockd è possibile?
    ho provato con la write a giocare un pò ma non ho avuto molta fortuna.

    voglio puntualizzare che in str_clisel_echo.c ho
    codice:
    str_clisel_echo(FILE *fd, int sockd)
    ed echo_client.h è questo
    codice:
    void  str_clisel_echo(FILE *fd, int sockd);
    naturalmente vorrei evitare di toccare quest'ultimo.
    †NN PUò PIOVERE PER SEMPRE†

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    argv[2] non è un puntatore a FILE

    E' una stringa che rappresenta un file, quindi lo devi aprire con la open in input e passare il puntatore a FILE alla tua funzione.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    57
    forse non ho capito bene ma vorrei solo chiarire che io ho da linea di comando questo:
    ./echo_sel_client 127.0.0.1 5(dove 5 è un intero) che fosse il mio argv[2] e io voglio passare proprio 5 che poi viene inviato al server.
    adesso mi hai suggerito che

    E' una stringa che rappresenta un file, quindi lo devi aprire con la open in input e passare il puntatore a FILE alla tua funzione.
    e ricordando che sotto gnu/linux tutto è un file, con la fopen come faccio ad aprire un intero?
    †NN PUò PIOVERE PER SEMPRE†

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Allora non ti sei spiegato.

    Il fatto che sia tutto file non significa che puoi trattare una semplice stringa come se fosse un file.

    Se vuoi inviare una stringa (il 5 è comunque una stringa) tramite quella funzione che accetta un file, dovrai cambiare quella funzione. Oppure dovrai salvare su file quella stringa e poi aprire il file e passarlo alla tua funzione.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Originariamente inviato da Crow©
    e ricordando che sotto gnu/linux tutto è un file, con la fopen come faccio ad aprire un intero?
    È un'idea di fondo, più che una garanzia, non puoi aprire un intero.
    Quello che puoi fare però è aprire una pipe (funzione pipe), scriverci dentro da un lato l'intero, e dare il "lato output" alla tua funzione. Dato però che la funzione pipe fornisce due descrittori file UNIX, dovrai prima collegare un FILE * al secondo descrittore usando la fdopen.
    Nota comunque che è decisamente un accrocchio, sarebbe meglio piuttosto sistemare la funzione che usi (se è in tuo potere).
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Originariamente inviato da MItaly
    Nota comunque che è decisamente un accrocchio
    Sì ... concordo ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    57
    la soluzione migliore è quella di modificare la funzione, il server gestisce più client contemporaneamente e in questo caso la cosa si complica leggermente, perchè bisogna pensare di avere o uno scenario di creazione e rimozione del file per ogni client oppure avere un'unico file a cui accedono tutti i client e gestire la scrittura/lettura ogni volta.

    beh grazie mille oregon sei stato gentilissimo.
    †NN PUò PIOVERE PER SEMPRE†

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.