首页 | 源码下载 | 网站模板 | 网页特效 | 广告代码 | 网页素材 | 字体下载 | 书库 | 站长工具
会员投稿 投稿指南 RSS订阅
当前位置:主页>服务器类>Linux服务器>资讯:Linux进程的阻塞与非阻塞

Linux进程的阻塞与非阻塞

www.jz123.cn  2010-08-05   来源:   中国建站    责任编辑(袁袁)    我要投递新闻

  首先创建一个子进程,接着让其等待5秒,接下来对父进程应用WAITPID函数等待子进程的退出,父进程每隔1秒判断一次。

  源码来自华清远见:

  #include

  #include

  #include

  #include

  #include

  int main()

  {

  pid_t pc, pr;

  //创建子进程

  pc = fork();

  if(pc < 0)

  {

  printf("error fork!n");

  }

  else if(pc == 0)

  {

  sleep(5);

  exit(0);

  }

  else

  {

  do{//循环测试是否子进程退出

  pr = waitpid(pc, NULL, WNOHANG);//非阻塞

  //pr =waitpid(pc, NULL, 0);//阻塞

  if(pr == 0)

  {

  printf("the child process has not exited!n");

  sleep(1);

  }

  }while(pr == 0);

  if(pr == pc)

  {

  printf("get child exit code: %dn", pr);

  }

  else

  {

  printf("some error occured.n");

  }

  }

  }

  注:

  从以上实验可以看出两个概念的区别:

  阻塞操作是指在没有执行设备操作时,如果没有获得资源,则进程挂起,直到满足可操作的条件再进行操作。非阻塞操作的进程在不能进行设备操作时,并不挂起


上一篇:Linux中命令行修改网关方法 下一篇:linux中如何让命令在后台运行

评论总数:0 [ 查看全部 ] 网友评论


关于我们隐私版权广告服务友情链接联系我们网站地图