
私は、GUI に Qt を使用して C++ でロボット プログラムを書いています。このプログラムでは、各スレッドがハードウェアにアクセスする必要があります。ハードウェアにアクセスするライブラリは pigpio と呼ばれ、/dev/mem を変更するため、ルート アクセスが必要です。
問題は、ユーザーにはルート アクセス権がなく、GUI とインターフェイスしているため、パスワードを入力する必要がないことです。setuid を試みましたが、Qt はこれをサポートしておらず、GTK+ もサポートしていません。ユーザーはパスワードなしで GUI をルートとして実行するにはどうすればよいですか? システムは Raspberry Pi 3B+ 上の Ubuntu 18.04 です。
答え1
最善の解決策は、pigpioではなくpigpiodを使用することです。これは、デーモンを起動時に実行できるようにするためです。
#!/bin/sh -e
pigpiod
exit 0
ファイルに
/etc/rc.local
残念ながら、pigpiod の API は異なるため、多くのコードを書き直す必要がありますが、テスト プログラムは動作しています。