- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
int shmid;
int* locat;
//create shared memory segment
shmid = shmget(6666, size, 0666);
if (shmid < 0) {
perror("shmget");
exit(1);
}
locat = (int *) shmat(shmid, NULL, 0);
if (locat == (int *) -1) {
perror("shmat");
exit(1);
}
我正在这样设置共享内存,但我一直收到此错误:shmget: No such file or directory
这段代码工作正常,不知道为什么现在会这样。
最佳答案
IPC_CREAT
Create a new segment. If this flag is not used, then
shmget()
will find the segment associated with key and check to see if the user has permission to access the segment.
您必须将 IPC_CREAT
添加到您的 shmget
调用
shmid = shmget(6666, size, IPC_CREAT | 0666);
您还可以使用IPC_EXCL
来确保该段是新创建的
IPC_EXCL
This flag is used with
IPC_CREAT
to ensure that this call creates the segment. If the segment already exists, the call fails.
关于c - C 中的共享内存 : Shmget Issues,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40926336/
我有这段代码: if ((shmid = shmget(key, 512, IPC_CREAT | 0666)) 之后,您应该可以将其创建得更大一些。 关于c++ - shmget 大小限制问题,我
我正在尝试学习 IPC UNIX API,特别是共享内存。我已经创建了这个试图访问共享内存段或创建共享内存段的小程序。 这是我的做法: gcc -Wall -Wextra *.c # in one t
#include #include #include #include #include #include #include int main() { int i=0;
我正在编写一个简单的程序来分配共享内存,下面是shmget的示例代码, #define SHM_SIZE 1024 main(int argc,char **argv) { int s
我正在绞尽脑汁地想弄清楚为什么这在我的 Minix 系统上不起作用。 当我尝试编译 C 程序时,出现以下错误: #make link pm/pm program.o: In funct
int shmCreate(int id, int size) { int shmid key_t key; if ((key = ftok(".", id)) == -1)
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visit
我正在尝试创建两组共享内存段。一个用于存储整数,另一个用于存储字符串。当我为我的整数创建共享内存段时,我在第二次 shmget 调用中不断收到错误消息。 keyS=5678; keyI=6789;
当我在下面的代码中运行 shmget 时,它返回一个值 -1,我不确定为什么会这样。其他一切似乎都运行良好。该代码只是应该从命令行获取几位数字,然后为它们创建共享内存。数字范围从 0 到 9。 #in
我创建了两个进程。其中一个创建共享内存块,另一个尝试读取它。此代码没有编译错误,但不知何故进程 2 的行为很奇怪。 过程 1: #include #include #include #inclu
我尝试将 shmget 与二维数组一起使用。这是我的代码: char **array; key_t key; int size; int shm_id; int i = 0; void *addr;
HugeTLB - Large Page Support in the Linux Kernel #include #include #include #include #define MB_
我正在使用 shmget 在我的 Linux 项目进程之间共享数据。 int shmget(key_t key, size_t size, int shmflg); 但是,任何其他程序也可以调用shm
在生产者流程中,我有以下内容。 说 MEMKEY 为 key_t 234500,并且 *shared_ring 是指向正在共享的数据结构 (donut_ring) 的指针。 int shmid, se
我需要一些有关此代码的帮助。 我在共享段中创建了一个struct msg_t,并在另一个段中创建了一个简单的字符串。在此方法中,首先附加两个段,然后要初始化字符串。然后我尝试将指向该字符串的指针(在第
使用以下参数调用: shmget(IPC_PRIVATE, sizeof(int), 0600); 我正在尝试确定将分配多少字节给共享内存块? 我认为它与 PAGE_SIZE 有关(在 32 位操作系
int shmid; int* locat; //create shared memory segment shmid = shmget(6666, size, 0666); if (shmid <
我有一个关于 C 中的 shmget() 函数的快速问题。该程序非常简单。它要求用户输入一个 shmid,然后输出 key 、模式、所有者等。 我正在使用 buffer->shm_perm.mode
在下面的示例中,我尝试使用 shmget 为 1 个整数和 10 个 foo 结构 分配内存并尝试线性访问它们。但是,它会因“地址边界错误”而出错。 对于 MacOS 系统(但在 Linux 上应该相
好的,所以我有一个字符串数组 char array[4][20]; //initialized strcpy(array[0], "PERSON1"); strcpy(array[1], "PERSO
我是一名优秀的程序员,十分优秀!