#include <stdio.h>;
#include <unistd.h>;
#include <limits.h>;
#include <errno.h>;
#include <string.h>;
#include <stdlib.h>;
#include <sys/stat.h>;
#include <sys/wait.h>;
#include <sys/ipc.h>;
#include <sys/sem.h>;
#define PERMS S_IRUSR|S_IWUSR
void init_semaphore_struct(struct sembuf *sem,int semnum,
int semop,int semflg)
{
/* 初始話信號燈結構 */
sem->;sem_num=semnum;
sem->;sem_op=semop;
sem->;sem_flg=semflg;
}
int del_semaphore(int semid)
{
/* 信號燈并不隨程式的結束而被洗掉,如果我們沒洗掉的話(將 1 改為 0)
可以用 ipcs 命令查看到信號燈,用 ipcrm 可以洗掉信號燈的
*/
#if 1
return semctl(semid,0,IPC_RMID);
#endif
}
int main(int argc,char **argv)
{
char buffer[MAX_CANON],*c;
int i,n;
int semid,semop_ret,status;
pid_t childpid;
struct sembuf semwait,semsignal;
if((argc!=2)||((n=atoi(argv[1]))<1))
{
fprintf(stderr,"Usage: %s number\n\a",argv[0]);
exit(1);
}
/* 使用 IPC_PRIVATE 表示由系統選擇一個關鍵字來創建 */
/* 創建以后信號燈的初始值為 0 */
if((semid=semget(IPC_PRIVATE,1,PERMS))==-1)
{
fprintf(stderr,"[%d]: Acess Semaphore Error: %s\n\a",
getpid(),strerror(errno));
exit(1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/138234.html
標籤:專題技術討論區
