Теперь я почти уверен, что runner.py
не имеет значения. rifle.py
— файл для изменения.
Около строки 375 есть строка:
cmd = [os.environ['TERMCMD'], '-e'] + cmd
Следует попытаться изменить флаг '-e'
на что-то другое, в зависимости от вашего $TERMCMD. Я протестировал несколько разных терминалов, и они у меня работают:
'--'
или'-x'
'-x'
'-e'
'-x'
'-x'
Других не проверял,но, вероятно, это будет один из '--'
, '-e'
, '-x'
.
В Linux это возможно благодаря udev
.
Идентифицируйте свое USB-устройство с помощью udevadm info -a /dev/yourdevice
. См. Написание правил udev .
из информации об устройстве создайте правило udev:
SUBSYSTEM=="zzz", ATTRS{idVendor}=="xxx", ATTRS{idProduct}=="yyy", RUN+="/usr/bin/my_signaler /dev/%k
напишите свою сигнальную программу (в моем правиле udev, она находится по адресу/usr/bin/my_sampler
):
#! /bin/bash
NEW_DEVICE="$1"
TARGETS=$(pgrep program_name)
for proc in $TARGETS
do
kill -s SIGUSR1 $proc
done
Заставьте вашу программу обрабатыватьSIGUSR1
#include <stdio.h>
#include <signal.h>
#include <unistd.h>
void wakeup(int sig) {
printf("go check /dev" );
}
int main(void) {
signal(SIGUSR1, wakeup);
while (1) {
/* if the SIGUSR1 signal is received while sleep is waiting, sleep will return*/
sleep(20);
}
return 0;
}