使用mmap遇到匯流排錯誤bus error

2021-09-12 03:10:25 字數 983 閱讀 8021

先簡單描繪一下錯誤發生的場景:

#define mmap_buff_size 4096

struct message

;int fd = open("./test",o_rdwr | o_creat);

lseek(fd,mmap_buff_size,seek_set);

message* m = null;

m = (message*)mmap(null,mmap_buff_size,prot_read | prot_write,map_shared,fd,0);

m->len = 3; //發生匯流排錯誤

strcpy(m->data,"123");

發生錯誤的原因是因為mmap不能去擴充套件乙個內容為空的新檔案,因為大小為0,所有本沒有與之對應的合法的物理頁,不能擴充套件。

所以只需要在新建立的空檔案中先寫入一些資料即可

完整場景

#define mmap_buff_size 4096

struct message

;struct mm

;int main()

write(fd,"1",1);

lseek(fd,mmap_buff_size,seek_set);

pid_t pid = fork();

if(pid == -1)

if(pid > 0)

wait(null);

munmap((void*)m,mmap_buff_size);

remove("./test");

}else

munmap((void*)m,mmap_buff_size);

}close(fd);

return 0;

}

vue使用bus匯流排,實現非父子元件間的通訊

vue元件通訊方式有好多,可以使用props傳值,但是props只能父子元件使用。也可以使用vuex,但是vuex比較重,而且非全域性的通訊最好不要使用vuex 在簡單的場景下,可以使用乙個空的vue例項作為 事件匯流排。這裡有兩種方式可以使用 第一種是新建乙個bus.js檔案,初始化乙個空的vue...

使用ajax遇到的錯誤

1.出現問題主要原因是button標籤的type屬性,button的type屬性值有三個分別為button submit reset。當我們在利用button標籤寫乙個按鈕且沒有指定其type屬性時,ie7以下版本會預設指定為button,其他會被預設指定為submit。當按鈕的type屬性被指定為...

使用pip時遇到的錯誤

typeerror unsupported operand type s for retry and int 由於國外官方pypi經常被牆,導致不可用,所以我們最好是將自己使用的pip源更換一下,這樣就能解決被牆導致的裝不上庫的煩惱。網上有很多可用的源,清華 linux下,修改 pip pip.co...