📄 几个程序.txt
字号:
共享内存
#include <stdio.h>
#include <sys/types.h>
#include <sys/msg.h>
#include <sys/ipc.h>
#define SHMKEY 75
int shmid,i;
int *addr;
void CLIENT()
{
int i;
shmid=shmget(SHMKEY,1024,0777);
addr=shmat(shmid,0,0);
for(i=9;i>=0;i--)
{
while(*addr!=-1);
printf("(client)sent\n");
*addr=i;
}
exit(0);
}
void SERVER()
{
shmid=shmget(SHMKEY,1024,0777|IPC_CREAT);
addr=shmat(shmid,0,0);
do {
*addr=-1;
while(*addr==-1);
printf("(server)receive\n");
} while (*addr);
shmctl(shmid,IPC_RMID,0);
exit(0);
}
void main()
{
while((i=fork())==-1);
if(!i) SERVER();
while((i=fork())==-1);
if(!i) CLIENT();
wait(0);
wait(0);
}
*****************************************************
进程通信-管道
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <signal.h>
//#include <ourhdr.h>
#define MAXLINE 128
int main()
{
pid_t pid_a,pid_b;
int status,n,fd[2];
char line[MAXLINE];
if(pipe(fd)<0)
printf("pipe error\n");
pid_a=fork();
if(pid_a<0){
printf("fork error\n");
exit(0);
}
else if(pid_a==0){
close(fd[0]);
status=write(fd[1],"Child 1 is sending a message!\n",30);
if(status<0)
printf("write error 1\n");
exit(0);
}
else{
pid_b=fork();
if(pid_b<0){
printf("fork error\n");
exit(0);
}
else if(pid_b==0){
close(fd[0]);
status=write(fd[1],"Child 2 is sending a message!\n",30);
if(status<0)
printf("write error 2\n");
exit(0);
}
else{
close(fd[1]);
while((n=read(fd[0],line,MAXLINE))>0){
write(STDOUT_FILENO,line,n);
}
}
}
return 0;
}
*************************************************
进程通信-消息队列
#include <stdio.h>
#include <sys/types.h>
#include <sys/msg.h>
#include <sys/ipc.h>
#define MSGKEY 75
struct msgform
{
long mtype;
char mtext[1030];
}msg;
int msgqid,i;
void CLIENT()
{
int i;
msgqid=msgget(MSGKEY,0777);
for(i=10;i>=1;i--)
{
msg.mtype=i;
printf("(client)sent\n");
msgsnd(msgqid,&msg,1024,0);
}
exit(0);
}
void SERVER()
{
msgqid=msgget(MSGKEY,0777|IPC_CREAT);
do {
msgrcv(msgqid,&msg,1030,0,0);
printf("(server)receive\n");
} while (msg.mtype!=1);
msgctl(msgqid,IPC_RMID,0);
exit(0);
}
void main()
{
while((i=fork())==-1);
if(!i) SERVER();
while((i=fork())==-1);
if(!i) CLIENT();
wait(0);
wait(0);
}
***********************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -