Linux'ta bir Windows paylaşımını -o uid=1000,gid=1000
ile yüklüyorum, dolayısıyla hiçbir izin sorunu görünmüyor. Windows'ta izinlerin doğru şekilde ayarlandığından emin oldum.Linux'ta Windows 'paylaşımı (LINUX) altında bir dosya nasıl oluşturulur?
Dizinleri ve dosyaları silme, düzenleme ve silme yapıyorum. Ancak, paylaşımdaki bir dosyayı kopyalayamıyorum (normal bağlama noktasında çalışır).
Ayrıca, dizinleri fsync kullanamıyorum, ancak bu anlaşılabilir bir durumdur.
Paylaşma nasıl yapılır?
#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;
}
Sonuç:
3
fallocate rc=0
errno=22
addr = 0xffffffffffffffff
için "/ tmp/blabla" o zaman alacağınız dosyayı değiştirerek eğer iken:
3
fallocate rc=0
errno=0
addr = 0x7f9e2de7c000
Bu errno değil, dönüş kodu. Errno'yu görmek için 'errno'nun gerçek değerini yazdırın. –
Bu kodu gönderdikten sonra errno'yu yazdırdım. -1 – Adi
tamam oldu. "9" – Adi