fbpx
Skip to main content

[LA] Linux avanzato 2008

  • COM_EASYSOCIAL_GUEST_NAME
  • Avatar di COM_EASYSOCIAL_GUEST_NAME
  • Visitatori
  • Visitatori
17 Anni 6 Mesi fa #72455 da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic [LA] Linux avanzato 2008
l'altro modo era passare i parametri tramite clone() (l'ultimo campo)

cmq... quanti hanno passato la 1a prova? e la 2a?

:roll:

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • COM_EASYSOCIAL_GUEST_NAME
  • Avatar di COM_EASYSOCIAL_GUEST_NAME
  • Visitatori
  • Visitatori
17 Anni 6 Mesi fa #72456 da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic [LA] Linux avanzato 2008

l'altro modo era passare i parametri tramite clone() (l'ultimo campo)

cmq... quanti hanno passato la 1a prova? e la 2a?

:roll:


Riguardo l'esercizio di stamattina, prima hanno chiesto come passare i parametri con la signal, penso non si possa :|

Se invece il problema era passare i parametri con la clone si poteva fare in altri 2 modi (var. globali a parte), il primo modo è passandoli direttamente come ultimi parametri della clone. Una cosa del genere funziona:

int a = 3, b = 5;
int pid_clone = clone((void*)clone_func(a, b), &stackclone[1023], CLONE_VM, &a, &b);

Oppure, e questo penso sarebbe piaciuto tanto a bovet, una struct con i vari campi, passando direttamente la struct alla clone come ultimo parametro.

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • COM_EASYSOCIAL_GUEST_NAME
  • Avatar di COM_EASYSOCIAL_GUEST_NAME
  • Visitatori
  • Visitatori
17 Anni 6 Mesi fa #72462 da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic [LA] Linux avanzato 2008
Si, ma se il problema è passare dei parametri il cui valore è noto solo al momento in cui arriva il segnale ... non posso farlo se non con le var globali. Altrimenti mi viene in mente shmget ( www.lilik.it/~mirko/gapil/gapilsu190.html ) ma sto sparando.

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • COM_EASYSOCIAL_GUEST_NAME
  • Avatar di COM_EASYSOCIAL_GUEST_NAME
  • Visitatori
  • Visitatori
17 Anni 6 Mesi fa #72468 da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic [LA] Linux avanzato 2008

l'altro modo era passare i parametri tramite clone() (l'ultimo campo)

cmq... quanti hanno passato la 1a prova? e la 2a?

:roll:


Riguardo l'esercizio di stamattina, prima hanno chiesto come passare i parametri con la signal, penso non si possa :|

Se invece il problema era passare i parametri con la clone si poteva fare in altri 2 modi (var. globali a parte), il primo modo è passandoli direttamente come ultimi parametri della clone. Una cosa del genere funziona:

int a = 3, b = 5;
int pid_clone = clone((void*)clone_func(a, b), &stackclone[1023], CLONE_VM, &a, &b);

Oppure, e questo penso sarebbe piaciuto tanto a bovet, una struct con i vari campi, passando direttamente la struct alla clone come ultimo parametro.

Io l'ho passato stamattina. Ho definito una struct contenente il file descriptor e il byte e l'ho passata al clone. Questo, dopo aver installato un signal handler per SIGUSR1, entrava in while(1) richiamando pause() ad ogni iterazione e scrivendo quindi nel relativo file.
Non so se funziona il passaggio multiplo di parametri tramite clone; secondo il man è possibile passarne più di uno dopo flags ma allo stesso tempo si richiede che la funzione passata alla clone abbia prototipo int func(void *)!!! Tempo fa avevo provato questa soluzione ma non funzionava (forse avevo sbagliato qualcosa)...

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • COM_EASYSOCIAL_GUEST_NAME
  • Avatar di COM_EASYSOCIAL_GUEST_NAME
  • Visitatori
  • Visitatori
17 Anni 6 Mesi fa #72478 da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic [LA] Linux avanzato 2008

l'altro modo era passare i parametri tramite clone() (l'ultimo campo)

cmq... quanti hanno passato la 1a prova? e la 2a?

:roll:


Riguardo l'esercizio di stamattina, prima hanno chiesto come passare i parametri con la signal, penso non si possa :|

Se invece il problema era passare i parametri con la clone si poteva fare in altri 2 modi (var. globali a parte), il primo modo è passandoli direttamente come ultimi parametri della clone. Una cosa del genere funziona:

int a = 3, b = 5;
int pid_clone = clone((void*)clone_func(a, b), &stackclone[1023], CLONE_VM, &a, &b);

Oppure, e questo penso sarebbe piaciuto tanto a bovet, una struct con i vari campi, passando direttamente la struct alla clone come ultimo parametro.

Io l'ho passato stamattina. Ho definito una struct contenente il file descriptor e il byte e l'ho passata al clone. Questo, dopo aver installato un signal handler per SIGUSR1, entrava in while(1) richiamando pause() ad ogni iterazione e scrivendo quindi nel relativo file.
Non so se funziona il passaggio multiplo di parametri tramite clone; secondo il man è possibile passarne più di uno dopo flags ma allo stesso tempo si richiede che la funzione passata alla clone abbia prototipo int func(void *)!!! Tempo fa avevo provato questa soluzione ma non funzionava (forse avevo sbagliato qualcosa)...


Per il passaggio dei parametri al sign_handler la risposta è: NON PUOI

l'handler riceve in input il num del segnale... e basta.

Per il passaggio alla clone, sono d'accordo con te ( ho fatto la prova anch'io... stessa soluzione tua... la cosa strana è che nella clone avevo specificato CLONE_STOPPED ma nn gli è piaciuta al sistema che nn mi stoppava una mazza...

per il passaggio di più parametri tramite clone, anch'io ho i tuoi stessi dubbi (che per evitare sorprese, ho aggirato con lo struct :)

/D

PS. insomma quanti so' sti "eletti" da bovet?

:lol:

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • COM_EASYSOCIAL_GUEST_NAME
  • Avatar di COM_EASYSOCIAL_GUEST_NAME
  • Visitatori
  • Visitatori
17 Anni 6 Mesi fa #72519 da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic [LA] Linux avanzato 2008
Ma quindi bastava fare una pause?E cme si faceva a sbloccare la pause con un segnale tipo SIGUSR1?signal(SIGUSR1,...?...)
Rispondete vi prego che mi sto mangiando il fegato da ieri..

Comunque ieri mattina sono(siamo) stati bocciati in 4/5 mi sembra..e credo tutti per il mio problema...non poter usare le variabili globali, e personalmente mi sono incastrato 1 ora e 40 a cercare di passare i parametri al signal handler..

Si prega Accedi o Crea un account a partecipare alla conversazione.