実現したいこと
Ubuntu20.04でUSBデバイスの挿入時に、自作常駐プロセスAにUDPパケットを送信したいです。
発生している問題・エラーメッセージ
C言語でUDPパケットを投げるソフトウェアを作成し(コマンドB)、ターミナルで実行するとユーザ実行でもsudo実行でも、正常に常駐プロセスAにUDPパケットを送信できることが確認できました。
しかし、USBデバイス挿入時に実行するよう/etc/udev/rules.d/以下にルールを記述し、USBデバイスを挿入したところ、UDPパケットの送信処理の部分でerrno=1(Operation not permitted.)でUDP送信に失敗するようになりました。
どういった原因でこのような現象が起こるか見当がつかず、何か原因として考えられそうなことをご教示いただけないでしょうか。
該当のソースコード
C言語
1// 該当部の抜粋 2s_addr.sin_family = AF_INET; 3s_addr.sin_addr.s_addr = inet_addr("127.0.0.1"); 4s_addr.sin_port = htons(39001); 5if (0 > (fd = socket(AF_INET, SOCK_DGRAM, 0)) { 6 printf("failed to open socket.\n"); 7} else if (0 > sendto(&fd, msg, msg_len, 0, (struct sockaddr *)&s_addr, sizeof(s_addr))) { 8 printf("failed to send msg. errno=%d\n", errno); 9}
udev.rules
1SUBSYSTEM=="usb", ACTION="add", SUBSYSTEMS=="usb", \ 2RUN+="/usr/local/bin/コマンドB"
エラーメッセージ
failed to send msg. errno=1
試したこと
ネットの情報からiptablesを疑い、下記のコマンドで設定をクリアしましたが効果はありませんでした。
sudo iptables -F

回答1件
あなたの回答
tips
プレビュー