本文共 753 字,大约阅读时间需要 2 分钟。
用C都可以调用,启动一个应用,在守护进程启动一个进程只能用 execl,
systme和popen与execl实际上差别很大。
system:启动另外一个应用之后,新应用的进程独立,当前进程也活着。即有两个互不影响的进程。 execl:启动另外一个应用之后,新应用的进程即是当前进程。进程数是一个。
需要强调的是:system/popen都是阻塞的,即运行不结束就不会返回。
如果不需要阻塞,马上返回,加一个后台运行符号 & 即可。
--------execl在Ubuntu和linux执行的区别:(里面的参数不一致)
1 ubuntu中守护进程带起一个应用进程
sprintf(cmdLine, "%s/%s/%s", WORK_DIR_PATH,APP_DIR_PATH,taskP->taskName);
if (execl(cmdLine, taskP->taskName, NULL) < 0) { sprintf(log, "\'%s\'start failed 2222222222222%s", taskP->taskName, strerror(errno)); MyWriteLog(log,TRUE); exit(1); }2 linux中守护进程带起一个应用进程
sprintf(cmdLine, "./%s &", taskP->taskName); if (execl("/bin/ash","ash","-c",cmdLine,(char *)0) < 0) { sprintf(log, "\'%s\'启动失败:%s", taskP->taskName, strerror(errno)); MyWriteLog(log,TRUE); exit(1); }转载地址:http://uuexi.baihongyu.com/