<分区>
以下是共享内存实现的程序,其中父进程和子进程将使用共享内存来打印父进程给定的下一个字母表。
有一个共享内存,两个进程都附加到它以获得所需的结果。在我的代码中,父进程根本不执行。
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>
#include<sys/ipc.h>
#include<sys/shm.h>
#include<sys/types.h>
int main(int argc,char *argv[])
{
int smid;
pid_t x;
char *sm;
smid=shmget(IPC_PRIVATE,(size_t)sizeof(char),IPC_CREAT);
x=fork();
if(x>0)
{
sm=(char *)shmat(smid,NULL,0);
sprintf(sm,"%s",argv[1]);
printf("Parent wrote:\n");
puts(sm);
sleep(4);
printf("Parent got:\n");
puts(sm);
shmdt(sm);
shmctl(smid,IPC_RMID,NULL);
}
else if(x==0)
{
sleep(2);
sm=(char *)shmat(smid,NULL,0);
printf("Child read:\n");
puts(sm);
sm[0]++;
}
return 0;
}