c 编程 shmat() 权限被拒绝

2023-12-10

当我运行我的代码时遇到问题。我的 shmat 失败并且打印权限被拒绝。我在谷歌上搜索了如何解决它,但我不能。我的代码如下:

#include <stdio.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
#include <unistd.h>
#define ERROR -1

int main ( int argc, char *argv[] ) {
    int shmid,key=50;
    int *val;
    int *x;
    int rw = -1;

    // 0 for write and 1 for read 

    shmid = shmget ( key, sizeof( int ), IPC_CREAT );

    if ( shmid == -1 ) {
        perror ( "Error in shmget\n" );
        return ( ERROR );
    }

    val = ( int * ) shmat ( shmid, NULL, 0 );

    if ( val == -1 ) {
        perror ( "Error in shmat\n" );
        return ( ERROR );
    }

    scanf ( "%d", &rw);

    while ( rw >= 0 ) {
        if ( rw == 0 ) {
            //write in the shared memory
            x = ( int * ) malloc ( sizeof ( int ) );

            if ( x == NULL ) {
                perror ( "Error in malloc" );
                return ( ERROR );
            }

            scanf ( "%d", x );

            val = x;

        }
        else {
            // read from the shared memory
            if ( rw == 1 ) {
                printf ( "%d\n", *val );
            }
        }

        scanf ( "%d", &rw );
    }

    return ( 0 );

}

在这段代码中我想测试共享内存。当我给 rw = 1 时,我在共享内存中写入一个整数,否则我读取共享内存的值,然后打印该值。我找不到问题出在哪里......


您创建了共享内存段,并将权限设置为0000:

shmid = shmget ( key, sizeof( int ), IPC_CREAT );

应该

shmid = shmget ( key, sizeof( int ), IPC_CREAT | 0660 );

或类似的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c 编程 shmat() 权限被拒绝 的相关文章

随机推荐

  • Sonata 用户 - 自定义字段的安全性

    我使用 SonataUser 和 FOSUser 来管理我的用户并创建了一个自定义字段company将每个都附加到特定的公司 现在我只需要让用户能够仅管理属于同一公司的用户 user1 company1 user2 company1 use
  • 如何在基于WPF的应用程序中限制光标移动?

    我正在使用 WPF 应用程序 更具体地说是具有可拖动元素的 Canvas 拖动项目后 我想将光标移动的范围限制在项目被拖动的画布内部 可以开始拖动的事件如下所示 private void WidgetCanvas PreviewHeader
  • 将标准 Base64 编码流输出为 PDF 格式 (PHP)

    我正在使用 Royal Mail Shipping API 生成打印的 PDF 标签 我的 PHP SoapClient 返回如下所示的有效响应 仅显示初始响应 因为整个响应很大 PDF 1 7 4 0 obj lt gt stream x
  • Python不断覆盖先前绘图上的历史记录,但不将其保存为所需的绘图

    我正在保存两个单独的图形 每个图形应包含 2 个图 问题是第一个图没问题 但第二个图不会在新图上被覆盖 而是在前一个图上被覆盖 但在保存的图中 我只找到其中 一个图 这是第一个数字 我正确地得到了第一个数字 import scipy sta
  • 如果用户已经登录,则重定向到主页[重复]

    这个问题在这里已经有答案了 可能的重复 当已通过身份验证的用户访问登录页面时如何重定向到另一个页面 如果登录用户点击login jsp页面 那么他应该会自动重定向到他的home jsp 在身份验证用户转到之前login jsp在通过 ser
  • Cygwin 上的 Makefile

    我正在尝试在 Windows 7 x64 上使用 Cygwin 来使用 makefile 我输入 make 得到的错误是 make 未指定目标且未找到 makefile 停止 生成文件 CC g CFLAGS g Wall pedantic
  • 页面渲染上的自定义 html 标签由于某种原因跳过 HTML 解析

    我不知道为什么会发生这种情况 但如果确实有很多这样的元素 看起来自定义 html 标签无法在页面加载时正确解析其内容 document registerElement x tag prototype Object create HTMLEl
  • 家谱的 Graphviz 点边缘端口

    I am very接近能够生成一个看起来并不糟糕的家谱 但我遇到了以下问题 file tree dot digraph edge dir none node fillcolor black fixedsize true shape box
  • 当我的应用程序指向其他地方时,如何使用 Url.Action 和 Html.ActionLink?

    我在 apps server com appname 上托管了一个 C MVC 应用程序 但我在公司的 F5 上进行了 URL 重写 使该应用程序对 www server com apps appname 可见 现在 当我导航到该 url
  • 如何使用 SDL Tridion TOM.NET API 获取页面或组件的已发布时间戳

    我正在尝试使用 TOM NET API 获取给定页面或组件到给定目标的已发布时间戳 这并不是立即显而易见的Page or Component对象 有人能指出我正确的方向吗 您可以使用PublishEngine GetPublishInfo
  • 如何在Java中复制HashMap(不是浅复制)

    我需要复印一份HashMap
  • UI 之外用于 javascript 链接的闪亮模块命名空间

    我正在尝试使用闪亮的模块来重用 UI 和服务器代码来呈现共享相同演示文稿的三个不同数据集 在 UI 服务器代码之外使用基于 JavaScript 的模态弹出链接创建时 在处理命名空间时遇到了一些挑战 这是我的非工作应用程序代码 librar
  • 大括号扩展和参数扩展的顺序

    StackOverflow 上的常见比喻bash is 为什么不x 99 echo 1 x work 答案是 因为大括号在参数 变量之前展开 因此 我认为应该可以使用单个变量来扩展多个变量 和一个支架 我预计a 1 b 2 c 3 echo
  • 如何使 FlowLayout 包裹在其 JSplitPane 中?

    我编写此代码示例是为了说明我的程序遇到的问题 我希望能够将 JSplitPane 的滑块向左滑动 超出按钮的边缘 压缩 JPanel 并使 FlowLayout 将按钮包装到第二行 相反 JSplitPane 不允许我将滑块移过屏幕上最右边
  • 反序列化时的备用属性名称

    关于这个问题 使用 Json net 序列化时如何更改属性名称 当然 很好 但是我可以把蛋糕吃掉吗 我正在寻找一种令人赏心悦目的方式 为属性提供一个备用名称 使得字符串可以包含其中之一 就像是 BetterJsonProperty Prop
  • Android 构建错误

    当尝试在 Eclipse 中构建我的应用程序时 我遇到了这些错误 当编译器警告我我的 project 文件丢失时 事情开始走下坡路 然后我尝试修复该项目 现在收到以下错误 构建期间发生错误 在项目 net learn2develop Lay
  • 如何关闭 dropwizard 应用程序?

    我正在尝试使用 dropwizard 提出一个微服务 该文档讲述了如何启动应用程序 但没有提及如何优雅地终止它 例如 apache tomcat 都有启动and关闭脚本 那么有谁知道除了按之外如何终止 dropwizard 应用程序Ctrl
  • Python如何通过多重继承传递__init__参数

    我有这段代码 显示了经典的菱形图案 class A def init self x print A x class B A def init self x print B x super init b class C A def init
  • 如何从react调用存储过程

    我得到了一个已经用 ASP NET 开发的网站 我需要在 React 中开发同样的东西 下面是在 net 中编写的代码 用于在用户单击登录时调用存储过程 Dal objDal new Dal DataSet ds objDal ByText
  • c 编程 shmat() 权限被拒绝

    当我运行我的代码时遇到问题 我的 shmat 失败并且打印权限被拒绝 我在谷歌上搜索了如何解决它 但我不能 我的代码如下 include