?? 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 + -