У меня есть интерфейс Tun, запускаемый процессом пользователя (root). Работает отлично. То, что я хочу сделать, это проверить входящие пакеты в поисках специального пакета, который запускает ожидающие процессы в «go» или «останавливает» или иным образом что-то делает.
Эти ожидающие процессы могут быть в ядре (sleep / select / poll) в ожидании прерывания сигналом или вращения чего-то другого.
Похоже, что есть способы сделать это (происходя из ядра: eventfd, используя signalfds, который я могу передавать между процессами) .
Но то, что я действительно хочу, это что-то вроде:
wait_process: открывает fd, связанный с интерфейсом tun, например:
fd = open("/dev/net/tunif")
...
s = wait_for_signal(fd)
if (s == SIGUSR1)
// looks like the signal we were looking for, do stuff
else
// CTRL-C from user maybe?
Есть ли что-то как это я могу сделать?