2010年4月18日 星期日

mmap

Mapped memory允許不同的Process透過Shared file來溝通,mmap()可以將檔案mapping到 process's address space中,好處是可以加速檔案的存取。

相關的函式:
#include <sys/mman.h>
void * mmap(void *addr, size_t len, int prot, int flags, int fildes, off_t off);

將檔案內容對應到記憶體
addr: 指定記憶體的起始位址,若為NULL,Linux會自動選擇一個可用的位址。
len: 對應的檔案的大小(byte)
prot: 記體體的存取權限,以下常數OR

PROT_READ - 可讀取
PROT_WRITE - 可寫入
PROT_EXEC - 可執行
PROT_NONE - 不可存取

flags :記憶體區段內容的修改方式

MAP_FIXED - 記憶體位址必須是指定的address
MAP_PRIVATE - 修改不會寫回原檔案
MAP_SHARED - 修改會反應到原檔案

int msync(void *addr, size_t len, int flags);
讓記憶體區段被修改的內容,寫回到對應該的檔案中
addr: 記憶體的起始位址
len: 記憶體區段的大小
flags: 更新方式

MS_ASYNC - 非同步寫入,不需馬上寫入
MS_SYNC - 同步寫入,馬上寫入
MS_INVALIDATE - 重新從檔案取得最新的資料

int munmap(void *addr, size_t len);
釋放記憶體區段

範例可參考此網頁

2010年4月8日 星期四

mutt寄信

在Linux用指令來寄信並加上附件,可以用mutt來完成。

指令: mutt -a 附件檔案 -s 主旨 收件者,例:
# mutt -a attachement.txt -s "Hello Mutt" test@test.com

寄件者的Email可以設定在~/.muttrc
my_hdr From: Name <E-Mail>