Python
如何通知程序硬體事件?
我正在尋找一個無限期等待事件的程序,在這種情況下,插入 USB/s 並在操作後執行一些操作。
我打算用 C 或 Python 編寫它。
問題是,如何在事件發生時通知程序(插入 USB 設備)?
其次,如果它是在 Python 中完成的,除了循環之外,還有其他資源密集型的等待事件的方法嗎?
在 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; }