IT猫扑网文章教程

分类分类

父子进程共享内存问题

2015-06-28 00:00作者:网管联盟

  #include <sys/mman.h>

  #include <sys/types.h>

  #include <fcntl.h>

  #include <unistd.h>

  #include <stdlib.h>

  #include <stdio.h>

  int

  main (int argc, char *argv[])

  {

  pid_t cpid;

  int *data = NULL;

  int fd;

  fd = open (&/dev/zero&, O_RDWR);

  if (fd < 0) {

  perror (&open /dev/zero&);

  exit(1);

  }

  data = (void *) mmap (0, 4096, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);

  if (data == MAP_FAILED) {

  perror (&mmap&);

  exit(2);

  }

  *data = 0;

  close (fd);

  cpid = fork ();

  if (cpid == 0)

  {

  for (;;)

  {

  sleep (1);

  printf (&Child-0: %dn&, *data);

  }

  } else if (cpid > 0)

  {

  cpid = fork ();

  if (cpid == 0)

  {

  for (;;)

  {

  sleep (1);

  (*data)++;

  printf (&Child-1: %dn&, *data);

  }

  } else if (cpid > 0)

  {

  for (;;)

  {

  sleep (1);

  printf (&Parent-0: %dn&, *data);

  }

  }

  }

  munmap (data, 4096);

  return 0;

  }

展开全部

相关文章

说两句网友评论
    我要跟贴
    取消