微机原理 北科大 第七次试验文档格式.docx

上传人:b****6 文档编号:18987684 上传时间:2023-01-02 格式:DOCX 页数:13 大小:747.09KB
下载 相关 举报
微机原理 北科大 第七次试验文档格式.docx_第1页
第1页 / 共13页
微机原理 北科大 第七次试验文档格式.docx_第2页
第2页 / 共13页
微机原理 北科大 第七次试验文档格式.docx_第3页
第3页 / 共13页
微机原理 北科大 第七次试验文档格式.docx_第4页
第4页 / 共13页
微机原理 北科大 第七次试验文档格式.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

微机原理 北科大 第七次试验文档格式.docx

《微机原理 北科大 第七次试验文档格式.docx》由会员分享,可在线阅读,更多相关《微机原理 北科大 第七次试验文档格式.docx(13页珍藏版)》请在冰豆网上搜索。

微机原理 北科大 第七次试验文档格式.docx

}

else{

close(fd[1]);

//这里是子进程,先关闭管道的写入端,然后在管道的读出端读出数据

n=read(fd[0],line,100);

write(STDOUT_FILENO,line,n);

exit(0);

ine,10

#include<

stdlib.h>

string.h>

sys/types.h>

sys/ipc.h>

sys/shm.h>

sys/sem.h>

errno.h>

#defineKEY_FILE"

/home"

#defineSHM_SIZE256

unionsemun{

intval;

/*valueforSETVAL*/

structsemid_ds*buf;

/*bufferforIPC_STAT&

IPC_SET*/

unsignedshort*array;

/*arrayforGETALL&

SETALL*/

};

intmain(void)

key_tshmkey=ftok(KEY_FILE,'

a'

key_tsemkey=ftok(KEY_FILE,'

b'

char*shmaddr;

intshmid;

intsem;

intsemid;

char*p;

unionsemunarg;

structsembufsops;

sops.sem_num=0;

sops.sem_op=0;

sops.sem_flg=SEM_UNDO;

shmid=shmget(shmkey,SHM_SIZE,IPC_CREAT|IPC_EXCL|0666);

if(shmid==-1)

if(errno!

=EEXIST)

perror("

shmget"

return-1;

}

shmid=shmget(shmkey,SHM_SIZE,0);

shmaddr=(char*)shmat(shmid,NULL,0);

if(shmaddr==(char*)-1)

shmat"

shmctl(shmid,IPC_RMID,NULL);

semid=semget(semkey,1,IPC_CREAT|IPC_EXCL|0666);

if(semid==-1)

if(errno!

semget"

return-1;

semid=semget(semkey,1,0);

sem=semctl(semid,0,SETVAL,1);

if(sem!

=0)

semctl"

p=shmaddr;

chars[10];

while

(1)

do

sem=semctl(semid,0,GETVAL,arg);

}while(sem==0);

sops.sem_op=-1;

sem=semop(semid,&

sops,1);

if(sem==-1)

semop1"

bzero(p,SHM_SIZE);

gets(s);

strcpy(p,s);

if(!

strcmp(s,"

quit"

))

{

semctl(semid,0,IPC_RMID);

shmdt(shmaddr);

shmctl(shmid,IPC_RMID,NULL);

return0;

}

sops.sem_op=1;

if(sem==-1)

{

perror("

semop2"

sleep

(1);

while(strlen(shmaddr)==0);

if(strcmp(p,"

)==0)

quit\n"

semop3"

printf("

%s\n"

shmaddr);

semop4"

sys/msg.h>

fcntl.h>

#definemax100

structhaha{

longmtype;

chardata[max];

intmain(intargc,char*argv[]){

intpid;

if(argc!

=2){

Usage:

msg[Message]\n"

}

key_tkey;

if((key=ftok("

/tmp"

'

g'

))<

0){//这里文件夹必须存在,有t属性并且上级目录也要有t属性

Gettingkeyerror!

\n"

intmgsid;

if((mgsid=msgget(key,IPC_CREAT|0666))==-1){//key值随便写一个数也能用

mgsqueuecreateerror\n"

pid=fork();

if(pid<

0){

forkcreateerror!

\n"

_exit

(1);

if(pid==0){

welcomeinchildprocess\nSendingthemessage......\n"

sleep

(1);

structhahahehe;

hehe.mtype=getppid();

strcpy(hehe.data,argv[1]);

if(msgsnd(mgsid,&

hehe,sizeof(hehe.data),0)<

//此处注意长度

Sendingerror!

!

}else{

Sendingcomplete!

_exit(0);

}else{

wait(NULL);

welcomeinparentsprocess\nReceivingthemessage......\n"

structhahagaga;

if(msgrcv(mgsid,&

gaga,max,getpid(),0)<

Receivingerror!

Receivingcomplete!

Themessageis%s\n"

gaga.data);

Work41.c

#include"

sem_com.h"

#defineDELAY_TIME3

intmain()

pid_tresult;

intsem_id;

sem_id=semget(ftok("

."

),1,0666|IPC_CREAT);

init_sem(sem_id,0);

result=fork();

if(result==-1)

Fork\n"

elseif(result==0)

{

Childprocesswillwatiforsomeseconds...\n"

sleep(DELAY_TIME);

Thereturnedvalueis%dinthechildprcess(PID=%d)\n"

result,getpid());

sem_v(sem_id);

else

sem_p(sem_id);

Thereturnedvalueis%dinthechildprocess(PID=%d)\n"

del_sem(sem_id);

exit(0);

sem_com.c

intinit_sem(intsem_id,intinit_value)

unionsemunsem_union;

sem_union.val=init_value;

if(semctl(sem_id,0,SETVAL,sem_union)==-1)

Initializesemaphore"

intdel_sem(intsem_id)

if(semctl(sem_id,0,IPC_RMID,sem_union)==-1)

Deletesemaphore"

intsem_p(intsem_id)

structsembufsem_b;

sem_b.sem_num=0;

sem_b.sem_op=-1;

sem_b.sem_flg=SEM_UNDO;

if(semop(sem_id,&

sem_b,1)==-1)

Poperation"

intsem_v(intsem_id)

sem_b.sem_op=1;

Voperation"

 

sem_com.h

#ifndef_SEM_COM_H_

#define_SEM_COM_H_

unionsemun{

intval;

externintinit_sem(intsem_id,intinit_value);

externintsem_p(intsem_id);

externintsem_v(intsem_id);

externintdel_sem(intsem_id);

#endif

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 自我管理与提升

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1