2
LinuxにWindows共有を-o uid=1000,gid=1000
でマウントしているため、アクセス権の問題は発生しません。私はアクセス許可がWindowsで正しく設定されていることを確認しました。Windowsのshare(LINUX)環境下でファイルをLinuxでmmapする方法は?
ディレクトリやファイルを作成、編集、削除できます。 しかし、共有上のファイルをmmapすることはできません(通常のマウントポイントで動作します)。
私はfsyncディレクトリもできませんが、これは理解できます。
共有をmmapするにはどうすればいいですか?
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/mman.h>
int main()
{
const char * file = "/home/lvm/Sources/SharedVM/blabla";
int fd = open(file, O_RDWR | O_CREAT | O_SYNC, S_IWUSR | S_IRUSR);
printf("%d\n", fd);
int frc = posix_fallocate(fd, 0, 1024L);
printf("fallocate rc=%d\n", frc);
void * result = mmap(0, 1024L, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
printf("errno=%d\n", errno);
printf("addr = %p\n", result);
printf("res = %p", result); // => 0xffffffffffffffff when windows share, or valid adddress on linux regular mount point
return 42;
}
結果:
3
fallocate rc=0
errno=22
addr = 0xffffffffffffffff
に "を/ tmp/blabla" にファイルを変更する場合は一方で、我々が得る:
3
fallocate rc=0
errno=0
addr = 0x7f9e2de7c000
これはerrnoではない、つまりリターンコードです。 errnoを見るために 'errno'の実際の値を出力します。 –
私はこのコードを提出した後にerrnoを印刷しました。それは-1 – Adi
でした。私の悪いです。それは "9"でした – Adi