如何在linux中编写一个类似CreateProcess的函数

 我来答
野人无事不言L
2016-05-15 · TA获得超过1413万个赞
知道顶级答主
回答量:2242万
采纳率:0%
帮助的人:138.7亿
展开全部
//本函数执行exepath指定的程序 //执行成功和失败无法返回 int execute_new(const char *exepath,const char *arg,unsigned int &retpid) { if(exepath == NULL) { return 0; } int argcount=0; char *argv[1024]={0}; char argsave[1024]={0}; char *argline = argsave; argv[0] = (char *)exepath; argcount++; ////////////分割和提取参数,作为execvp函数的参数 if(arg != NULL) { strncpy(argsave,arg,1024-1); int is_find_space = -1; //-1, if(*argline != ' ') { argv[argcount] = (char *)argline; argcount++; } while(*argline != '\0') { if(*argline == ' ' && *(argline+1) != ' ' && *(argline+1) != '\0') { argv[argcount] = (char *)(argline+1); argcount++; } if(*argline == ' ') { *argline='\0'; } argline++; } } pid_t pid; int status; if((pid = fork())<0){ status = -1; } else if(pid == 0){ execv(exepath,argv); _exit(127); //子进程正常执行则不会执行此语句 } else{ retpid = pid; waitpid(pid, &status, WNOHANG|WUNTRACED); } return status; }
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式