GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak spustit program C++ vždy, když je vložen USB flash disk?

Mám program C++, který přistupuje k USB flash diskům/flash diskům. Funguje pro aktuálně vložený flash disk. Normální program v C++ se nespustí, dokud jej nespustíme. Chtěl jsem ale, aby se program spouštěl automaticky při každém vložení flash disku. Jak to mohu udělat?

Přijatá odpověď:

Pro obecné použití, pokud chcete spustit svůj program pro jakékoli úložiště USB. Použijte ovladač pro shodu pravidla.

  1. Přidejte udev soubor pravidel

    sudo nano /etc/udev/rules.d/90-detect-storage.rules
    
  2. Přidejte toto pravidlo

    ACTION=="add", DRIVERS=="usb-storage", DRIVER=="sd", RUN+="/pathto/yourprogram"
    

    Pokud chcete, aby váš program rozlišoval disky a spouštěl různé operace, použijte (můžete zadat jeho sériové číslo nebo jakýkoli atribut, který chcete):

    ACTION=="add", DRIVERS=="usb-storage", DRIVER=="sd", RUN+="/pathto/yourprogram $env{ID_VENDOR_ID} $env{ID_MODEL_ID}"
    
  3. Znovu načíst všechna pravidla

    sudo udevadm control --reload-rules
    
  4. Odpojte a znovu připojte flash disk

Poznámky:

  • Toto pravidlo jsem použil jen k testování, které vytvoří protokol, když je pravidlo spuštěno:

    ACTION=="add", DRIVERS=="usb-storage", DRIVER=="sd", RUN+="/bin/sh -c 'echo $env{ID_VENDOR_ID} $env{ID_MODEL_ID} >> /home/username/Desktop/usb-storage.log'"
    
  • Pravidla, která nechcete, můžete komentovat přidáním # na začátek řádku. Soubor pravidel může obsahovat více pravidel.

  • Chcete-li zkontrolovat všechna dostupná env proměnné, použijte:

    ACTION=="add", DRIVERS=="usb-storage", RUN+="/bin/sh -c 'echo == >> /home/username/Desktop/usb-storage-env.log; env >> /home/username/Desktop/usb-storage-env.log'"
    
  • Chcete-li zkontrolovat parametry pro shodu pravidla, spusťte:

    sudo udevadm info --name=/dev/sdb1 --attribute-walk
    

Odkazy:

  • Předejte ATTR{idVendor} jako argument ve skriptu udev
  • Psaní pravidel udev od Daniela Drakea

Ubuntu
  1. Jak automaticky zkopírovat obsah USB (flash) disku do jiného adresáře?

  2. Nelze vytvořit spouštěcí USB na Macu?

  3. Jak připojit USB flash disk v Linuxu

  1. Jak šifrovat USB disk na Ubuntu 18.04 LTS

  2. Jak nainstalovat Ubuntu na USB flash disk

  3. Jak vytvořit bootovací Memtest86+ na USB flash disku?

  1. Jak formátovat pevný disk, USB flash disk a SD karty v základním OS / Ubuntu

  2. Jak vytvořit bootovací Ubuntu Live USB disk

  3. Jak nainstalovat kompletní Ubuntu na USB flash disk