当前位置:首页 > 山东大学操作系统实验六报告死锁问题
}
fclose(pf); return -1; }
int dp::set_sem(key_t sem_key,int sem_val,int sem_flg) {
int sem_id;
Sem_uns sem_arg;
//测试由 sem_key 标识的信号量是否已经建立
if((sem_id=get_ipc_id(\
//semget 新建一个信号灯,其标号返回到 sem_id
if((sem_id = semget(sem_key,1,sem_flg)) < 0){
perror(\
exit(EXIT_FAILURE); } }
//设置信号量的初值
sem_arg.val = sem_val;
if(semctl(sem_id,0,SETVAL,sem_arg) < 0){
perror(\
exit(EXIT_FAILURE);
}
return sem_id; }
char * dp::set_shm(key_t shm_key,int shm_num,int shm_flg) {
int i,shm_id;
char * shm_buf;
//测试由 shm_key 标识的共享内存区是否已经建立
if((shm_id=get_ipc_id(\
//shmget 新建 一个长度为 shm_num 字节的共享内存
if((shm_id= shmget(shm_key,shm_num,shm_flg)) <0){
perror(\
exit(EXIT_FAILURE); }
//shmat 将由 shm_id 标识的共享内存附加给指针 shm_buf
if((shm_buf=(char *)shmat(shm_id,0,0)) < (char *)0){
perror(\
exit(EXIT_FAILURE); }
for(i=0; i
共分享92篇相关文档