3
我想創建一個共享內存對象並將其截斷爲特定大小。共享內存編程中的shm_open和ftruncate()
SHMSIZE與512
MODE被設置與S_IRUSR定義| S_IWUSR | S_IWGRP | S_IRGRP | S_IWOTH | S_IROTH
這裏是我的代碼
char *shm_name = "SharedMemory";
int fd;
/* Open an Shared Memory Object for Read-/Write-Access */
if((fd = shm_open(shm_name, O_RDWR | O_CREAT, MODE) < 0)) {
perror("\nshm_open() in Caretaker failed");
exit(EXIT_FAILURE);
}
/* Truncate Shared Memory Object to specific size */
if((ftruncate(fd, SHMSIZE) < 0)) {
perror("\nftruncate() in Caretaker failed");
exit(EXIT_FAILURE);
}
在調試我看了那個的shm_open()的返回值爲0每一次,但我可以看到的/ dev/shm的這個對象。在執行ftruncate()時,它每次都返回錯誤「無效參數」。
爲什麼fd每次都是0,爲什麼ftruncate不起作用? 我該怎麼辦?
非常感謝你。有時候這是一個簡單的解決方案! – user3229664