23,121
社区成员
发帖
与我相关
我的任务
分享
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#define MAX_SEQUENCE 20
#include <stdlib.h>
#include <assert.h>
#include <sys/shm.h>
#include <sys/stat.h>
typedef struct
{
int fib[MAX_SEQUENCE];
int seq_size;
}shared_data;
int main(int argc, char *argv[])
{
int seg_id = shmget(IPC_PRIVATE, sizeof(shared_data), S_IRUSR | S_IWUSR);
shared_data *shared_memeory = (shared_data *)shmat(seg_id, NULL, 0);
shared_memeory->seq_size = atoi(argv[1]);
pid_t pid = fork();
if( pid == 0)
{
int f1 = 1;
int f2 = 1;
int i;
shared_memeory->fib[0] = f1;
shared_memeory->fib[1] = f2;
for(i = 3; i <= shared_memeory->seq_size; i++)
{
int t = f1+f2;
f1 = f2;
f2 = t;
shared_memeory->fib[i-1] = t;
}
}
else if( pid > 0)
{
// sleep(5);
wait(NULL);
int i ;
for(i = 0; i < shared_memeory->seq_size; i++)
printf("%d\n", shared_memeory->fib[i]);
shmdt(shared_memeory);
shmctl(seg_id, IPC_RMID, NULL);
exit(0);
}
}