SAK in questo caso significa davvero Secure Attention Key . Il messaggio che stai vedendo è un messaggio del kernel definito in drivers/tty/tty_io.c. SAK è una combinazione di tasti che garantisce un accesso sicuro per un utente sulla console. Su Linux SAK garantisce ciò uccidendo tutti i processi collegati al terminale su cui SAK è invocato. Si prevede che init
riavvierà quindi il processo di accesso attendibile come getty
seguito da login
o server X con gestore display .
I PID elencati sono effettivamente PID di thread della tua applicazione CX_SC3
che sono stati uccisi da SAK.
fd#n opened to the tty
significa che il processo/thread che è stato ucciso aveva il descrittore di file n
aperto al terminale su cui è stato invocato il SAK.
In Linux ci sono due modi per invocare SAK:
-
Attraverso il tasto magico SysRq - tipicamente Alt +SysRq +K (terminale virtuale) o Break K (console seriale). Questo non è il tuo caso perché hai già provato a disabilitare il magico SysRq di
echo 0 > /proc/sys/kernel/sysrq
e inviando il Pausa K la sequenza accidentale è improbabile. -
Attraverso una sequenza di tasti definita (terminale virtuale) o il segnale di break (console seriale). La disponibilità di SAK su una console seriale è controllata da
setserial
.
Il segnale di interruzione su una linea seriale è l'invio continuo di valori di spaziatura per un tempo più lungo del tempo di invio del carattere (inclusi i bit di avvio, arresto e parità). Nel tuo caso è molto probabile che la condizione del segnale Break appaia durante lo spegnimento del computer host. Prova a disattivare il SAK sulla tua porta seriale sul dispositivo di destinazione entro setserial
:
setserial /dev/ttyS0 ^sak
Puoi controllare lo stato della funzionalità SAK sulla porta seriale con setserial -g /dev/ttyS0
. Una volta attivato mostrerà SAK
dopo Flags:
. Per l'impostazione automatica dell'opzione dopo l'avvio vedere gli script di avvio che sui sistemi BusyBox sono solitamente /etc/init.d/rcS
e /etc/rc.d/S*
oppure seleziona /etc/inittab
per altre possibilità.
Sono riuscito a risolvere il problema con l'aiuto della risposta di pabouk. La soluzione basata su codice che ho finalmente scoperto che consente il SAK
il flag da impostare/disattivare sulla porta seriale all'apertura utilizzando l'API dello spazio utente può essere trovato su stackoverflow qui Come posso disabilitare l'opzione SAK della porta seriale su Linux utilizzando l'API dello spazio utente?