Ubuntu 18.04를 사용하고 있는데 화면 녹화를 방지할 수 있는 프로그램을 만들고 싶습니다. 나는 이것을 달성하기 위해 두 가지 방법을 시도했습니다.
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
파일 권한이 그룹 쓰기로 변경되므로 권한이 없으므로 어떤 응용 프로그램도 데이터를 읽을 수 없습니다. 오디오는 재생되지 않으며 오디오가 포함된 비디오도 재생되지 않습니다.
두 가지 방법 모두에서 직면하고 있는 문제
첫 번째 방법으로는 파일이 잠겨 있지 않은 경우도 있으며, 잠겨 있어도 응용 프로그램이 계속해서 파일에서 데이터를 읽을 수 있습니다.
두 번째 방법으로는
권한을 복원했을 때 chmod 772
앱은 오디오를 재생할 수 없다는 변경 사항을 읽을 수 없었으며 이 효과를 얻으려면 시스템을 재부팅해야 했습니다.
어떤 문제를 해결해야합니까?
첫 번째 방법으로는 파일이 잠겨 있는 동안에는 어떤 프로세스도 장치 파일을 읽을 수 없습니다.
두 번째 방법으로는
권한을 복원할 때 772
효과를 읽기 위해 앱을 다시 시작할 필요가 없습니다. PC 대신 오디오 프로세스를 다시 시작해야 합니다.