Ubuntu 18.04を使用していますが、画面の録画を防ぐためのプログラムを作成したいと思います。 私はこれを達成するために2つの方法を試しました。
1. C++で強制ファイルロックを使用する
#include<bits/stdc++.h>
#include<unistd.h>
#include<fcntl.h>
#include <sys/file.h>
using namespace std;
int main(int argc,char **argv)
{
int fd = open(argv[1], O_RDWR);
static struct flock lock;
lock.l_type = F_WRLCK; //F_WRLCK F_RDLCK
lock.l_start = 0;
lock.l_whence = SEEK_SET;
lock.l_len = 0;
lock.l_pid = getpid();
cout<< fcntl(fd, F_SETLKW, &lock)<<'\n';
while (1) { } // to run this application so lock didn't release
//will add release lock function here
return 0;
}
/dev/video0
カメラのデバイスファイルをロックします。同じ方法でスクリーン録画に使用されるファイルをロックします(現在のスクリーン録画に使用されているデバイスファイルがわかりません)。これにより、他のアプリケーションで読み取れないようにファイルがロックされたままになります。
2. ファイル権限の変更sudo chmod 002 /dev/snd
(オーディオ担当) 実行すると、ファイル
snd
権限がグループ書き込みに変更されるため、権限がないため、どのアプリケーションでもデータを読み取ることができません。オーディオは再生されず、オーディオを含むビデオも再生されません。
両方の方法で直面している問題
最初の方法として ファイルがロックされていない場合もあり、ロックされていてもアプリケーションはファイルからデータを読み続けることができます。
2番目の方法では
権限を復元すると、chmod 772
アプリはオーディオを再生できないという変更を読み取ることができず、この効果を得るためにシステムを再起動する必要がありました。
どの問題を解決する必要がありますか?
最初の方法として ファイルがロックされている間は、どのプロセスでもデバイスファイルを読み取ることができません。
2番目の方法では
権限を復元するときに772
効果を読むためにアプリを再起動する必要はありません。 PCの代わりにオーディオプロセスを再起動する必要があります。