今天運行了老師給的程序庫中關於存儲映射問題,運行測試程序的時候,shmat函數出現以下錯誤
信息:shmat: Permission denied!網上有人說是 ftok("/tmp/a.txt",0)中a.txt的權限問題,我將open
函數修改爲:open("/tmp/a.txt", O_RDWR | O_CREAT, S_IRUSR | S_IWUSR);還是出現相同問題。還有
人說是權限問題,後來發現其實不是這樣的。
關於問題的解決:
真正的問題是使用shmget函數時,並未賦予共享存儲讀寫權限,以至於shmat函數無權限以指定方式
連接共享內存。正確的解決方式應該修改shmget函數:shmget(key, 4, IPC_CREAT|0666);