📄 semtest.c
字号:
///////////////////////////////////////////////////////////////ModuleName: semtest.c//Author: delaybbc//WrittenTime: 2004/3/5//Functions: This module test use of sem in Linux/Unix IPC//Reference: /////////////////////////////////////////////////////////////////////////////////////////header///////////////////////////#include "/home/delaybbc/inc/m_ipc.h"#include "/home/delaybbc/inc/m_networks.h"//////////////////////constant defination////////////////////////////////////////////global variant///////////////////////#define NUM_SEMAPHORE 1int sem_id;struct sembuf sem[1];key_t unique_id;int value;////////////////////////////body/////////////////////////////void quit(){ semctl(sem_id,0,IPC_RMID,0); exit(0);}void handle_ctrl_c(int signo){ sem[0].sem_num=0; sem[0].sem_op=1; sem[0].sem_flg=0; if(semop(sem_id,sem,1)==-1) { printf("can not modify the semaphore value"); quit(); } value=semctl(sem_id,0,GETVAL,0); if(value>=10) quit(); printf("%d",value);}main(){ struct sigaction act; sigset_t sigmask; unique_id=ftok(".",'r'); printf("%d\n",unique_id); sem_id=semget(unique_id,0,0); printf("%d\n",sem_id); if(sem_id==-1) { sem_id=semget(unique_id,NUM_SEMAPHORE,IPC_CREAT|IPC_EXCL|0666); if(sem_id==-1) { printf("create semaphore error!\n"); quit(); } } printf("%d\n",sem_id); value=semctl(sem_id,0,GETVAL,0); printf("asd%d",value); act.sa_handler=handle_ctrl_c; sigemptyset(&act.sa_mask); sigaddset(&act.sa_mask,SIGINT); sigaction(SIGINT,&act,NULL); while(1); { } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -