我想用 C 编写一个程序,从消息队列接收消息。 我这里有现有的代码:typedef struct { long id; char mes[20]; } message; int main() { key_t cle = ftok(".",0); ...
我想用 C 编写一个程序,从消息队列接收消息。 我这里有现有的代码:typedef struct { long id; char mes[20]; } message; int main() { key_t cle = ftok(".",0); ...
用于生成ftok()生成的键的公式是什么? ftok是一个用于为SYSTEM V IPC创建密钥的Linux功能。 ...
我只是在linux上学习IPC,并提出了三个简单的程序。 一个是创建(并在该功能中管理)消息队列。 第二个应该只是将消息发送到第一个创建的队列。 第三个程序是从队列接收数据。 所有程序都继承自相同的根目录,并且每个源和二进制文件都分别插入到不同的目录中。 所以我们只关注创建和发 ...
如果我对第一个参数使用文件名而不是路径名怎么办? 比如我的程序在以下目录/afs/edu/id/group/a/ftok_test.c 在这种情况下,如果我使用 这两个有什么区别? ...
我正在学习IPC编程。 作为它的一部分,我尝试了以下两个代码来了解消息队列...。 消息队列创建者或消息发送者 讯息接收者 以上代码可在beej的消息队列指南中找到。 当我尝试执行“ spock”时,msgget()抛出错误:没有这样的文件或目录。 ftok( ...
我正在尝试调试一些旧代码的问题。 在尝试了解我在看什么时,我发现它使用ftok构建了两个唯一的共享内存空间。 我在网上看了看它是做什么的,我偶然发现了这个链接。 我深入了解了一下,发现ftok不能保证唯一的键,而且空间碰撞的可能性很小。 ftok()碰撞 因此,我一直在努力确定 ...
使用C,我正在尝试设置共享内存。 我的代码看起来像: 然而,第二个我运行最后一行,我得到一个分段错误。 调试时,我可以打印“sharedval”,我得到一个内存地址,大概就是我得到的内存中的位置。 所以我认为我所要做的就是使用*sharedval来评估它,但显然不是。 我怎么想从 ...
我已经开始阅读Linux上IPC机制之一的消息队列。但是,第一步我有一些非常基本的问题。 使用ftok()生成唯一ID(密钥)以及要生成的唯一ID。 我们不能使用简单的数字而不是ftok()来获取密钥吗? msget函数中参数key的作用是什么? msqid和k ...
我使用ftok()为C应用程序使用的共享内存段生成标识符。 我遇到了问题,在一个盒子上我遇到了root使用的标识符。 我可以通过破解代码在这个例子中修复它,但我想要一个更强大的解决方案。 应用程序安装在自己的逻辑卷中,提供给ftok的路径是应用程序的二进制目录(在该lv中)。 提供的 ...
使用共享内存时,我们为什么要关心创建密钥 在下面的代码中? 根据我的理解,访问给定共享内存所需的是shmid ,而不是密钥。 还是我错了? 如果我们需要的是shmid ,那么每次创建随机密钥有什么意义呢? 编辑 @ Beej的Unix IPC指南可以阅读: ...
它在ftok()手册中提到过 ftok()函数使用由给定路径名命名的文件的标识(必须引用现有的可访问文件) ... 我对const char *pathname感到困惑。 它最好的做法是什么? 在我当前的系统上,我可以传递"/home/Andrew/anyfile"但是我的 ...
我制作了一个 Linux CUI 应用程序,它通过消息队列在进程之间进行通信。 只要是单例就没有问题。 但是,当同一个应用程序有多个实例时,队列中的消息会被发送到错误的实例。 我知道这可以通过给 msgget function 一个唯一的键来避免。 使用 ftok() 创建密钥,但由于变量相同,它们 ...