📄 msq.c
字号:
#include<stdio.h>#include<unistd.h>#include<sys/types.h>#include<sys/ipc.h>#include<sys/msg.h>#include<string.h>#include<stdlib.h>#include<signal.h>#include<sys/stat.h>#define BUFSE 512int init_daemon(void){ int pid; int i; /*忽略终端I/O信号,STOP信号*/ signal(SIGTTOU,SIG_IGN); signal(SIGTTIN,SIG_IGN); signal(SIGTSTP,SIG_IGN); signal(SIGHUP,SIG_IGN); pid=fork(); if(pid>0){ exit(0); } else if(pid<0){ return -1; } /*建立一个新的进程组,在这个新的进程组中,子进程成为这个进程组的首进程,以使该进程脱离所有终端*/ setsid(); /*再次建立一个子进程,退出父进程,保证进程不再是进程组的组长,同时让该进程无法打开一个新的终端*/ pid=fork(); if(pid>0){ exit(0); } else if(pid<0){ return -1; } /*关闭所有从父进程那里继承到的不再需要的文件描述符*/ for(i=0;i<NOFILE;i++) /*改变工作目录,使得进程不与任何文件系统联系*/ chdir("/y"); /*将文件屏蔽字设置为0*/ umask(0); /*忽略SIGCHLD信号*/ signal(SIGCHLD,SIG_IGN); return 0;}int main(){ /*用户自定义消息缓冲区*/ struct message{ long msgtype; char msg_text; } int pid; int msglen; key_t msgkey; /*获取键值*/ if((msgkey=ftok(PATH_NAME,PROJ_ID))==-1) { perror("fotk error!\n"); exit(1); } /*创建消息队列*/ if((pid=msgget(msgkey,IPC_CREAT|0660))==-1) { perror("msgget error!\n"); exit(1); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -