虚拟机上的竞争条件

时间:2016-05-26 12:02:36

标签: c unix virtual-machine virtualbox race-condition

我正在执行一个演示竞争条件的程序。 如果操作系统是主启动或双启动,它可以正常工作。 但是在虚拟机上,它无法证明竞争条件。

虚拟机:Oracle虚拟机   操作系统:红帽

代码是肯定的。但是对于虚拟机(OS-> red hat),它不起作用。它只打印第一个进程(子进程),然后是第二进程(父进程)。

以下是代码:

#include<stdio.h>
#include<stdlib.h>
#include<error.h>

static void charatatime(char *);

int main(void)
{
 pid_t pid;
 if((pid=fork())<0)
 {
  printf("fork error\n");
 }
 else if(pid==0)
  charatatime("output from child\n");
 else
  charatatime("output from parent\n");
 exit(0);
}

static void charatatime(char *str)
{
 char *ptr;
 int c;
 setbuf(stdout,NULL);
 for(ptr=str;(c=*ptr++)!=0;)
  putc(c,stdout);
}

这背后可能是什么原因?

0 个答案:

没有答案