Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Insta360 X6: Dolby Vision, 8K e montaggio "Zero Editing"
Insta360 X6: Dolby Vision, 8K e montaggio "Zero Editing"
La nuova Insta360 X6 introduce sensori Sony da 1/1.1" e un SoC Triple AI a 4nm. Analizziamo le riprese 8K, il primo Dolby Vision nativo a 10-bit nel settore sferico e l'innovativo flusso di lavoro diretto sulla futura versione 22 di DaVinci Resolve.
Due settimane con Dacia Spring 2026: novità, consumi, autonomia reale e test bagagli
Due settimane con Dacia Spring 2026: novità, consumi, autonomia reale e test bagagli
Dopo due settimane trascorse al volante della Dacia Spring 2026 possiamo raccontarvi tutto, dalle novità di motore e batteria, fino ai consumi in tutti le situazioni, compresa l'autonomia reale ad alta velocità
AORUS GeForce RTX 5080 INFINITY WOOD 16G: una scheda video diversa dalle altre
AORUS GeForce RTX 5080 INFINITY WOOD 16G: una scheda video diversa dalle altre
Abbiamo messo alla prova la nuova AORUS GeForce RTX 5080 INFINITY WOOD 16G, una delle interpretazioni più particolari della GPU NVIDIA Blackwell. Prestazioni, frequenze operative, temperature, consumi e margini di overclock sono stati confrontati con altre RTX 5080 custom e con la Founders Edition. Il design in legno è solo uno degli elementi distintivi di una scheda che punta a ritagliarsi uno spazio nella fascia più alta del mercato.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 27-06-2006, 19:31   #1
mercury841
Senior Member
 
Iscritto dal: Nov 2004
Messaggi: 409
[c]=progetto socket

Ragazzi devo fare questo progetto:

Shell Remota
Si realizzi un programma client/server che, tramite socket del dominio AF INET, permetta di eseguire i
comandi unix sotto riportati dalla macchina server a partire dalla macchina su cui é in esecuzione il
client.

I comandi da implementare sono almeno i seguenti:
-cp <path> <path> - Copia un file (regolare) da <path> a <path>
-ls <path> - Lista il contenuto della directory <path>
-rm <path> - Cancella il file individuato da <path>
-mkdir <path> - Crea la directory individuata da <path>

i comandi devono essere lanciati dalla macchina client insieme con i relativi argomenti, devono essere
eseguiti sulla macchina server e riportare il risultato dell’esecuzione sulla macchina client.

Secondo voi sono presenti delle sezioni critiche da gestire?
Ciao e grazie a chi mi aiuta.
mercury841 è offline   Rispondi citando il messaggio o parte di esso
Old 28-06-2006, 07:49   #2
wisher
Senior Member
 
L'Avatar di wisher
 
Iscritto dal: Aug 2005
Messaggi: 2755
secondo me si potrebbe fare utilizzando la exec sul server e poi (nn so se possibile ma credo di si) reindirizzando lo stdout del comando eseguito direttanente sul socket
__________________
wisher è offline   Rispondi citando il messaggio o parte di esso
Old 28-06-2006, 08:29   #3
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da mercury841
Ragazzi devo fare questo progetto:

Shell Remota
Si realizzi un programma client/server che, tramite socket del dominio AF INET, permetta di eseguire i
comandi unix sotto riportati dalla macchina server a partire dalla macchna su cui é in esecuzione il
client.

I comandi da implementare sono almeno i seguenti:
?-cp <path> <path> - Copia un file (regolare) da <path> a <path>
?-ls <path> - Lista il contenuto della directory <path>
?-rm <path> - Cancella il file individuato da <path>
-mkdir <path> - Crea la directory individuata da <path>

i comandi devono essere lanciati dalla macchina client insieme con i relativi argomenti, devono essere
eseguiti sulla macchina server e riportare il risultato dell'esecuzione sulla macchina client.

Secondo voi sono presenti delle sezioni critiche da gestire?
Ciao e grazie a chi mi aiuta.
fare un client/server non é una cazzata
conosci la fork(), execvp(), etc() etc() etc() ?

devi creare un socket con socket(AF_INET, SOCK_STREAM, 0)
settare le opzioni con setsockopt(...) chiamare la bind(...)
la listen(...) se tutto é OK il server si deve clonare con la fork()
poi eventualmente modificare i parametri e passarli alla execvp(...).
E dopo viene il difficile

in bocca al lupo
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 28-06-2006, 09:11   #4
mercury841
Senior Member
 
Iscritto dal: Nov 2004
Messaggi: 409
Di quello che avete detto già ho fatto tutto, a me interessava sapere solo se, secondo voi, facendo un sistema multiclient c'era bisogno di gestire qualche sezione critica.
mercury841 è offline   Rispondi citando il messaggio o parte di esso
Old 28-06-2006, 09:57   #5
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da mercury841
Di quello che avete detto già ho fatto tutto, a me interessava sapere solo se, secondo voi, facendo un sistema multiclient c'era bisogno di gestire qualche sezione critica.
ah scusa allora. Qui spesso capita che si chieda tutto il programma bello e pronto
cosa intendi per sezione critica ?
hai messo la gestione segnali ?
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 28-06-2006, 10:14   #6
Andlea
Senior Member
 
Iscritto dal: Nov 2004
Messaggi: 357
Quote:
Originariamente inviato da mercury841
Di quello che avete detto già ho fatto tutto, a me interessava sapere solo se, secondo voi, facendo un sistema multiclient c'era bisogno di gestire qualche sezione critica.
Ora mi viene solo in mente di controllare il segnale che sblocca la accept
Andlea è offline   Rispondi citando il messaggio o parte di esso
Old 28-06-2006, 10:30   #7
mercury841
Senior Member
 
Iscritto dal: Nov 2004
Messaggi: 409
Quote:
Originariamente inviato da trallallero
cosa intendi per sezione critica ?
allora per sezione critica intendo una parte di codice nel quale un processo o un thread può modificare variabili comuni,scrivere in un file e così via.Quando un processo o un thread è in esecuzione nella propria sezione critica, non si deve consentire a nessun altro processo o thread di essere in esecuzione nella propria sezione critica. Nel mio caso ci potrebbero essere due client che cercano di eseguire due operazioni diverse sullo stesso file contemporaneamente, per esempio un client manda il comando "rm file1" e un altro client manda il comando "cp file1 copia_file1". Secondo voi devo gestire questa situazione cioè evitare che queste due operazioni vengano eseguite contemporaneamente oppure lascio le cose così come stanno?


Quote:
Originariamente inviato da trallallero
hai messo la gestione segnali ?
Segnali per cosa?Che tipo di segnali?
mercury841 è offline   Rispondi citando il messaggio o parte di esso
Old 28-06-2006, 10:43   #8
mercury841
Senior Member
 
Iscritto dal: Nov 2004
Messaggi: 409
Quote:
Originariamente inviato da Andlea
Ora mi viene solo in mente di controllare il segnale che sblocca la accept
come controllare il segnale che sblocca la accept?
cma grazie a tutti per l'aiuto.
mercury841 è offline   Rispondi citando il messaggio o parte di esso
Old 28-06-2006, 10:50   #9
Andlea
Senior Member
 
Iscritto dal: Nov 2004
Messaggi: 357
Codice:
for(;;){
if((socket = accept(....)) < 0){
if(errno == EINTR) continue;
else {
perror("errore nella accept");
exit(1);
}
}
Andlea è offline   Rispondi citando il messaggio o parte di esso
Old 28-06-2006, 11:01   #10
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da mercury841
Segnali per cosa?Che tipo di segnali?

Segnali quali sigquit, sigint ...
se tu prendi il pid del server e ci fai un bel kill -9 <pid>
nel server potresti intercettarlo ed agire di conseguenza.
Se viene ucciso il server prima dealloco la memoria,
chiudo i sockets, stampo "ciao" a video etc etc
poi esco, per esempio.

Codice:
/* ------------------------------------ *\
      PREPARA INTERCETTAZIONE SEGNALI.
\* ------------------------------------ */
static void SigInit(void)
{
   enum sigTab  // ENUMERAZIONE ARRAY DI STRUTTURE PER 'sigaction'.
   {
       sigCHLD
     , sigQUIT
     , sigINT
     , sigPIPE
     , OFFsignal
   };

   static struct sigaction s[OFFsignal];

   s[sigQUIT].sa_sigaction = QuitFunction;
   sigemptyset(&s[sigQUIT].sa_mask);
   s[sigQUIT].sa_flags = NULL;
   if (sigaction(SIGQUIT, &s[sigQUIT], 0))
      ExitMsg(__LINE__ ,1 ,"sigaction:SIGQUIT");

   s[sigINT].sa_sigaction = QuitFunction;
   sigemptyset(&s[sigINT].sa_mask);
   s[sigINT].sa_flags = NULL;
   if (sigaction(SIGINT, &s[sigINT], 0))
      ExitMsg(__LINE__ ,1 ,"sigaction:SIGINT");

   s[sigPIPE].sa_sigaction = PipeHandler;
   sigemptyset(&s[sigPIPE].sa_mask);
   s[sigPIPE].sa_flags = NULL;
   if (sigaction(SIGPIPE, &s[sigPIPE], 0))
      ExitMsg(__LINE__ ,1 ,"sigaction:SIGPIPE");
}
questo é la gestione dei segnali di un server che ho fatto anni fa.
Gestisco i segnali quit, interrupt e pipe.
Quando arriva un segnale del genere viene chiamata la funzione
che gli dico io (QuitFunction o PipeHandler) che deve essere
fatta in un certo modo ... .sa_sigaction é un pointer a funzione
di un certo tipo:
Codice:
void (*p)( int, siginfo_t *, void *)
Per la sezione critica non ti saprei dire. Non ho esperienza
a riguardo. Ma é interessante ... ci penso un pó
Ma calcola che non ho esperienza teorica che comunque serve,
sicuramente chi ha studiato all'universitá ti puó aiutare
con info piú precise
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 28-06-2006, 17:38   #11
mercury841
Senior Member
 
Iscritto dal: Nov 2004
Messaggi: 409
è sorto un problema, io per far esguire i comandi al server faccio una dup2 per ridirezionare l'output nella socket, e poi una execvp con il vettore dei comandi. Funziona per tutti i comandi tranne per uno, se voglio far eseguire il comando "rm -i nome_file", per prima cosa non mi scrive nella socket "rm: remove regular file `nome_file'?", ma poi nel caso volessi inviare dal client la risposta y come dovrei fare????????
mercury841 è offline   Rispondi citando il messaggio o parte di esso
Old 11-07-2006, 09:20   #12
mercury841
Senior Member
 
Iscritto dal: Nov 2004
Messaggi: 409
io per far esguire i comandi al server faccio una dup2 per ridirezionare l'output nella socket, e poi una execvp con il comando da eseguire. Funziona però, volevo chiedervi se secondo voi è meglio usare una popen reindirizzando l'output su un file e poi copiare il contenuto di questo file nella socket.Ciao
mercury841 è offline   Rispondi citando il messaggio o parte di esso
Old 11-07-2006, 10:44   #13
sottovento
Senior Member
 
L'Avatar di sottovento
 
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
Quote:
Originariamente inviato da mercury841
io per far esguire i comandi al server faccio una dup2 per ridirezionare l'output nella socket, e poi una execvp con il comando da eseguire. Funziona però, volevo chiedervi se secondo voi è meglio usare una popen reindirizzando l'output su un file e poi copiare il contenuto di questo file nella socket.Ciao
Ciao,
direi che la dup() (o la dup2()) sono la soluzione migliore. In effetti ti dovrebbero risolvere anche il problema dell'output di rm -i.
Per quanto riguarda le sezioni critiche, il mio consiglio e' quello di non fare assolutamente niente.
I vantaggi sono la semplicita' di realizzazione (non devi far niente) ed il fatto che e' giusto cosi': nel caso un client impartisca il comando di rm su un file che e' in fase di copia, il sistema reagira' come se i comandi fossero impartiti da due console locali.

Per quanto riguarda la gestione dei segnali: hai il problema che se un client se ne va in modo non corretto (per esempio, va in crash), TCP/IP potrebbe non avvertirti. Non e' detto, infatti, che tu possa ricevere una notifica di una simile situazione.

Purtroppo questa situazione, se non la gestisci, ti porterebbe ad avere un processo/thread oppure un semplice descrittore sempre allocato per una risorsa che non esiste piu'.

In questo senso, gestire i segnali di kill potrebbe aiutarti ma non ti risolve il problema. Forse la cosa migliore (a patto di complicare il codice) e' di avere un messaggio di watchdog ("sei vivo?") che viaggia in entrambe le direzioni. Se non lo ricevi in tempo utile, chiudi tutto.

Buon lavoro
Sottovento
__________________
In God we trust; all others bring data
sottovento è offline   Rispondi citando il messaggio o parte di esso
Old 11-07-2006, 11:25   #14
mercury841
Senior Member
 
Iscritto dal: Nov 2004
Messaggi: 409
e in che modo posso realizzare la funzione del watchdog? mandando un messaggio al client e vedendo se mi risponde?
mercury841 è offline   Rispondi citando il messaggio o parte di esso
Old 11-07-2006, 14:32   #15
sottovento
Senior Member
 
L'Avatar di sottovento
 
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
Quote:
Originariamente inviato da mercury841
e in che modo posso realizzare la funzione del watchdog? mandando un messaggio al client e vedendo se mi risponde?
Beh, si.
Questa e' la soluzione che viene usata piu' frequentemente. Certo, se devi fare solo un esame, non complicarti troppo la vita. Chiudi solo in caso ti venga notificato un errore (per esempio, una chiamata quale read(), write(), accept() e via dicendo fallisce).

High Flying
Sottovento
__________________
In God we trust; all others bring data
sottovento è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Insta360 X6: Dolby Vision, 8K e montaggio "Zero Editing" Insta360 X6: Dolby Vision, 8K e montaggio "...
Due settimane con Dacia Spring 2026: novità, consumi, autonomia reale e test bagagli Due settimane con Dacia Spring 2026: novit&agrav...
AORUS GeForce RTX 5080 INFINITY WOOD 16G: una scheda video diversa dalle altre AORUS GeForce RTX 5080 INFINITY WOOD 16G: una sc...
Hyundai Ioniq 9: dopo due settimane di test non avremmo voluto restituirla Hyundai Ioniq 9: dopo due settimane di test non ...
LG UltraGear evo GM9: 27 pollici, 5K, Mini LED e Dual Mode LG UltraGear evo GM9: 27 pollici, 5K, Mini LED e...
Il nuovo Samsung Galaxy S26 FE non ha pi...
Anthropic firma 9,1 miliardi con un mine...
Reflect Orbital ammette: un telescopio d...
Meta ha lanciato la nuova app Facebook C...
Offerta lancio pazzesca per Pixel 11 Pro...
Questa è l'auto del futuro che so...
Google lancia i Pixel 11, Pixel Watch 5 ...
Microsoft sfida i cinesi: il nuovo model...
XPeng esagera: ecco la G9L, 5,1 m di lun...
SpaceX potrebbe tornare a utilizzare pia...
Quando l'IA allucina nei campi: il model...
La pubblicità di iPhone che indig...
NVIDIA prepara un LLM gigante da oltre m...
ESA e Arianespace avrebbero cancellato l...
I fari di alcune Tesla sono troppo lumin...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 23:03.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v