Docker 里面 msgrcv函数 返回 errorno 13 'permission denied 错误'

最近项目一直到Docker环境部署,之前一直正常运行的程序突然出现 msgrcv函数 返回 errorno 13 'permission denied 的
错误,且一直频繁打印该错误,尝试了各种方法和阅读man手册后,找到了改问题的解决办法,主要就是需要在 msgget函数中 设置一下权限,附demo源码,在docker运行正常(demo可以直接运行)

  • msgget函数的flag设置为 IPC_CREAT|S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH 或者 IPC_CREAT|00666
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <errno.h>
#include <signal.h>
#include <algorithm>
#include <iostream>
#include <sys/stat.h>

int g_msgId = 0;
bool g_exit = false;

struct MsgType {
	long msgType;
	char buffer[64];
};

void* thread_fun(void* parg) {

	//create message queue
	MsgType msg;
	key_t key;
	int msgid;

	key = ftok(".", 1);
	if (-1 == key) {
		printf("ftok error %d\n", errn
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值