问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

linux 消息队列什么时候删除

发布网友 发布时间:2022-04-22 02:58

我来回答

1个回答

热心网友 时间:2023-07-19 20:49

我用的linux as4 的操作系统,重装了oracle数据库后,以前的老数据文件和里面的文件都不能删除,并且读写和执行的权限都赋权给了oracle和root这两个账号,删除时提示为只读系统文件,请高手指点如何修改文件,能给出相应的命令最好!
msgrcv.c 内容如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <fcntl.h>
#include <sys/mman.h>
#include <errno.h>
#include <sys/ipc.h>
#include <sys/msg.h>

#define N 10
typedef struct student
{
int sno;
char sname[15];
}STU;

typedef struct msgbuf
{
long mtype;
STU stu[N];
}MSGBUF;

main(int argc, char* argv[])
{
int i = 0;
MSGBUF mbf = {0};
mbf.mtype = 1;
int MSQID ;
errno = 0;
char *name = "./msgaaa";
key_t key = ftok(name,0);
MSQID = msgget(key, IPC_CREAT);
while(i < N)
{
mbf.stu[i].sno = i;
strcpy(mbf.stu[i].sname, "hello");
if (i == 1)
{
memset(mbf.stu[i].sname, 0, strlen(mbf.stu

[i].sname));
strcpy(mbf.stu[i].sname, "aaa");
}
if (i == N-1)
{
memset(mbf.stu[i].sname, 0, strlen(mbf.stu

[i].sname));
strcpy(mbf.stu[i].sname, "end");
}
printf("------- %s ------", mbf.stu[i].sname);
msgsnd(MSQID, &mbf.stu[i], sizeof(mbf.stu[i]), 0);
if (-1 == errno)
{
perror("msgsnd");
exit(-1);
}
printf(" %d -- %s\n", mbf.stu[i].sno, mbf.stu[i].sname);
i++;
sleep(1);
}//while
msgctl(MSQID, IPC_RMID, NULL);
}

msgsnd内容如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <fcntl.h>
#include <sys/mman.h>
#include <errno.h>
#include <sys/ipc.h>
#include <sys/msg.h>

#define N 10
typedef struct student
{
int sno;
char sname[15];
}STU;

typedef struct msgbuf
{
long mtype;
STU stu[N];
}MSGBUF;

main(int argc, char* argv[])
{
int i = 0;
MSGBUF mbf = {0};
mbf.mtype = 1;
int MSQID ;
errno = 0;
char *name = "./msgaaa";
key_t key = ftok(name,0);
MSQID = msgget(key, IPC_CREAT);
while(i < N)
{
mbf.stu[i].sno = i;
strcpy(mbf.stu[i].sname, "hello");
if (i == 1)
{
memset(mbf.stu[i].sname, 0, strlen(mbf.stu[i].sname));
strcpy(mbf.stu[i].sname, "aaa");
}
if (i == N-1)
{
memset(mbf.stu[i].sname, 0, strlen(mbf.stu[i].sname));
strcpy(mbf.stu[i].sname, "end");
}
// printf("------- %s ------", mbf.stu[i].sname);
msgsnd(MSQID, &mbf.stu[i], sizeof(mbf.stu[i]), 0);
if (-1 == errno)
{
perror("msgsnd");
exit(-1);
}
printf(" %d -- %s\n", mbf.stu[i].sno, mbf.stu[i].sname);
i++;
sleep(1);
}//while
msgctl(MSQID, IPC_RMID, NULL);
}

msgsnd 显示结果:
0 -- hello
1 -- aaa
2 -- hello
3 -- hello
4 -- hello
5 -- hello
6 -- hello
7 -- hello
8 -- hello
9 -- end
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
淘宝买家差评删除流程是什么?具体步骤介绍 神拳李青多少钱 《英雄联盟》盲僧新皮肤睁眼介绍_《英雄联盟》盲僧新皮肤睁眼是什么_百 ... 至高之拳李青高清壁纸至高之拳李青 盲僧金虾皮肤致敬哥哥张国荣 新版皮肤爱的初体验 英雄联盟盲僧神龙尊者皮肤一览 QQ输入法手机版如何进入输入法设置菜单 福来者福往爱出者爱返是什么意思 电脑开机后鼠标自动移动 速度还非常快 为什么总有一大堆验证码发到我手机上。 linux编程的利用消息队列在两个进程间通信,怎么写... linux消息队列,读而不删怎么弄 高手进!在Linux系统中用消息队列实现两个进程之间... 如何释放linux过时消息队列 linux 消息队列 的权限问题 Linux下编程消息队列怎么封装较好,怎么保证2个进... 请问Linux下如何清除消息队列queue中的内容 linux 有没有直接发送消息到队列的命令 Linux下 用消息队列收发长度不同的消息 linux系统中哪些可以用于进程间的通信消息队列临界... 请教一个关于linux消息队列的问题 linux系统自带的消息队列和rabbitmq有什么区别? linux 消息队列编程 linux系统编程中的消息队列该怎么使用呀?? Linux多线程同步之消息队列有何特点 电脑中win键是哪个键 键盘windows是哪个键 021-60444623电话 说是建行信用卡 真假啊 4006763673给我打电话说是建行信用卡中心的给我提... 02160345757是不是建行信用卡的电话 linux 程序异常退出,怎么删除消息队列 win10浏览器无法访问页面 win10浏览器无法显示此页怎么办 win10为什么ie浏览器总是无法访问页面 联想win10系统自带edge浏览器打开无法访问该页面,... win10浏览器打不开网页怎么回事 0755是什么地方的区号 0755开头的是什么电话 深圳各区电话号码是怎么区分的? win10浏览器为什么无法访问网页 深圳区号0755是哪里 0755开头是什么电话 0755是哪里的区号 0755是哪里的电话号码区号 0755开头的号码是干嘛的 深圳的区号是多少 请问0755是深圳的区号吗 0755是那里的区号 广东省深圳市南山区的区号是多少 0755是哪儿的区号