文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>linux下的execv与windows下的__execv

linux下的execv与windows下的__execv

时间:2006-06-24  来源:xueyan

好像实现的功能不太一样啊!! linux: #include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/types.h>
#include <unistd.h>
int main(int argc, char* argv[])
{
  pid_t id;
  id = getpid();
  static char *largv[]  = { "id", NULL };
  printf("befor exec! %d\n",id);
  if(execv("test_execv", largv) == 0)
    printf("sleep over!\n");
  else
      printf("sleep falure\n");
  return 0;
}
生成的可执行文件为test_execv,该函数的功能是嵌套的执行自己,看看linux是否另外派生一个子进程执行test_execv:输出结果为:
befor exec! 31843
befor exec! 31843
befor exec! 31843
befor exec! 31843
befor exec! 31843
befor exec! 31843
befor exec! 31843
befor exec! 31843
befor exec! 31843
befor exec! 31843
befor exec! 31843
befor exec! 31843
befor exec! 31843
befor exec! 31843
befor exec! 31843
befor exec! 31843
befor exec! 31843
befor exec! 31843
befor exec! 31843
befor exec! 31843
befor exec! 31843
befor exec! 31843
befor exec! 31843
befor exec! 31843
befor exec! 31843
befor exec! 31843
befor exec! 31843
befor exec! 31843
befor exec! 31843
befor exec! 31843
befor exec! 31843
befor exec! 31843
befor exec! 31843
befor exec! 31843
    windows: #include "stdafx.h"
#include <stdlib.h>
#include <stdio.h>
#include <process.h>
#include <afx.h>
int main(int argc, char* argv[])
{
 int ids;
 ids = _getpid();
  char *largv[2];
  largv[0]="test";
  largv[1] = NULL;
 DWORD err;
  printf("befor execv!%d\n", ids);
  if(_execv("test", largv) != -1)
   printf("will this show?\n");
  else
   err = GetLastError();
  return 0;
}
程序思路与上相同,但输出结果: befor execv! 30716
befor execv! 26632
befor execv! 26696
befor execv!26760
befor execv!26824
befor execv!26888
befor execv!26952
befor execv!27016

看来windows是派生了新的进程来执行,而linux没有。他们都没有执行execv之后的任何语句。。。。


相关阅读 更多 +
排行榜 更多 +
点赞小姐姐

点赞小姐姐

休闲益智 下载
火车向前冲

火车向前冲

休闲益智 下载
人狠话不多

人狠话不多

休闲益智 下载