2012-09-27 5 views
4

ramfs를 리눅스의 디렉토리에 마운트하려면 C++을 사용해야합니다. 나는 그것을 사용자 (no sudo)처럼 만들고 싶다.리눅스에서 C++로 램 디스크를 생성하십시오

내가 만든 파일에서 응용 프로그램을 호출해야하며 자주 실행됩니다. HDD에 쓰기가 매우 느립니다.

system("mkdir /mnt/ram"); 
system("mount -t ramfs -o size=20m ramfs /mnt/ram"); 

을하지만 잘되지 않습니다 :

난 그냥 발견했다. 나는 일반 사용자가되고 싶고, 명령어 mount은 루트 권한으로 호출 할 수있다. 무엇을 할 수 있습니까?

+1

파일을 메모리로 한 번 읽고 메모리 내 표현만을 조작 할 수 있습니다. 완료되면 디스크에 다시 기록하십시오. – MadScientist

+0

왜 tmpfs 항목을'fstab' 파일에 추가하지 않습니까? 필요에 따라 사용자가 마운트 할 수 있도록 'user' 플래그를 추가하십시오. 또는 메모리 매핑 된 파일을 사용하십시오. –

+0

나는 수퍼 유저 권한을 얻는 것이 유일한 방법이라고 생각한다. 일부 C++ 코드 나 setuid 비트를 사용하여 실행 가능한 루트 권한을 부여하여이 작업을 수행 할 수 있습니다. – Paolo

답변

-1

/tmp이 램프 인 경우 체크하지만 그럴 수는 없습니다. HDD에 파일을 생성합니다. 난 df -h을 실행할 때 그 출력 : /dev/shm, /run, /sys/fs/cgroup/media을 :

rootfs      25G 9,4G 15G 40%/
devtmpfs     1,9G  0 1,9G 0% /dev 
tmpfs      1,9G 1,6G 347M 83% /dev/shm 
tmpfs      1,9G 1,3M 1,9G 1% /run 
/dev/mapper/vg_micro-root 25G 9,4G 15G 40%/
tmpfs      1,9G  0 1,9G 0% /sys/fs/cgroup 
tmpfs      1,9G  0 1,9G 0% /media 
/dev/mapper/vg_micro-stack 289G 191M 274G 1% /stack 
/dev/mapper/vg_micro-home 322G 40G 266G 14% /home 
/dev/sda2     485M 89M 371M 20% /boot 
/dev/sda1     200M 19M 182M 10% /boot/efi 

tmpfs (램 디스크)는 것을 의미한다. 그러나이 중 하나는 파일을 사용하여 프로세스 간의 통신을위한 임시 램 디스크가 될 것입니다. Here/dev/shm 설명 및 사용법입니다. 유일한 것은 tmpfswill not grow dynamically이지만 내 용도로는 충분할 것입니다 (20MB - 1GB).

+0

themel이 지적했듯이,'/ tmp' 파일은 RAM에 있습니다. 그것은 tmpfs이기 때문에가 아니라 파일 캐시가 게으르기 때문입니다. – MSalters

0

사용자 공간 ramfs 솔루션의 경우 python-fuse-ramfs을 사용할 수 있습니다.