当前位置: 首页 > news >正文

学校网站建设项目可行性分析报告网站开发可能存在的困难

学校网站建设项目可行性分析报告,网站开发可能存在的困难,网页结构有哪几种,专业网站建设公司怎么选现实中程序编写的时候,经常会碰到一些这样需求:调用系统命令,完成一些操作,或判定结果 或获取结果作为启动进程,调用第三方进程,并监控进程是否退出加载升级进程,升级进程kill调用者或调用者自行…

现实中程序编写的时候,经常会碰到一些这样需求:

  1. 调用系统命令,完成一些操作,或判定结果 或获取结果

  1. 作为启动进程,调用第三方进程,并监控进程是否退出

  1. 加载升级进程,升级进程kill调用者或调用者自行退出,完成升级

网上方法也有很多种,但各有差异

  1. 直接调用system启动

例如:system("/opt/yourapp") 此时会运行yourapp的进程

当然,如果需要后台运行,仅需后面加 & ,如:system("/opt/yourapp &")

这样system启动yourapp 不用等待退出,就可执行下一步

  1. 使用popen打开cmd

例如 FILE *pp = popen("/opt/yourapp &", "r");

  1. 使用execl 或者 execv来加载进程

execl("/opt/yourapp","yourapp", (char*)0);

  1. 使用 posix_spawn 打开进程

char* const args[] = {fullPath,appName,p1,p2,nullptr};

int res = posix_spawn(&pid, args[0], nullptr, nullptr, args, environ);

那么这几种有什么区别或特点呢?

shell环境变量

特点

system

执行异步执行(&)

开启shell

不共享shell环境变量

一般用于简单系统命令,例如reboot

popen

也可异步,但一般需要获取执行结果时

开启shell

不共享shell环境变量

一般用于命令调用,结合fileread可以获取执行返回值,例如 ls命令返回结果

execl 或者 execv

一般需要fork子进程,然后创建新进程

共享

监控子进程。父进程不退出

posix_spawn

在当前环境下,开启进程

可带参数

共享

加载进程。跟父进程无关

system跟popen相差不大,都是重开一个shell,然后运行的

所以,不继承父进程的shell 环境变量,如果需要依赖环境变量的,此时需要做调整,

如果进程要带参数,也是可以的 直接cmd带参数即可:system("/opt/yourapp -r xxxx &");

popen同时还会建立管道,此时,可根据管道获取执行的进程返回信息,例如 我们执行popen("pidof yourapp"),此时可以方便获取到 yourapp进程的pid号

int Exec(const char *cmd, vector<string> &res)
{res.clear();FILE *pp = popen(cmd, "r");if(pp == nullptr){return -1;}char tmp[1024] = {0};while(fgets(tmp, sizeof(tmp), pp) != NULL){if(tmp[strlen(tmp) - 1] == '\n'){tmp[strlen(tmp) - 1] = '\0';}res.push_back(string(tmp));}auto eStatus = pclose(pp);if (eStatus < 0){return res.size();}if (0 != WEXITSTATUS(eStatus)){return res.size();}return res.size();
}

execl 或者 execv

一般跟fork一起,fork本意就是复制父进程

fork 函数会新生成一个进程,调用 fork 函数的进程为父进程,新生成的进程为子进程。在父进程中返回子进程的 pid,在子进程中返回 0,失败返回-1。系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来的进程的值不同。相当于克隆了一个自己。

这样做的坏处:就是过分依赖父进程,如果是兄弟进程就不好用这种方式加载了

posix_spawn是比较好解决兄弟进程,也就是A进程 posix_spawn B进程,通用B进程也可以 posix_spawn A进程,相互之间不干扰

http://www.yayakq.cn/news/517632/

相关文章:

  • 网站推广方式案例淄博企业网站排名优化
  • 网站流量被用完了网易企业邮箱客户端下载
  • 礼县住房和城乡建设局网站北京网站制作沈阳
  • dw怎么做网站教程火锅自助餐网站建设
  • 做网站有用吗wordpress链接跳转等待
  • 广州网站建设 知名张家港网站建设
  • wordpress 关闭google字体菏泽做网站优化的
  • 推广赚佣金项目电商网站商品页的优化目标是什么
  • 做网站成功网站的建设和推广
  • 金属质感 网站工作室注册条件
  • 专业关键词排名软件江西做网站优化好的
  • 阿里云网站建设模板门户网站的建设与维护
  • 网站域名重要吗类qq留言网站建设
  • 超链接到网站怎么做视频建设网站需要有什么特色
  • 北京网站开发建设网站放友情链接违法吗
  • 做网站要买多大服务器便宜的网站空间
  • 吉安市建设局图审中心网站wordpress html文件
  • 开源网站开发文档下载漯河做网站xknt
  • 重庆开发网站小说网站有源码了该怎么做
  • 远程管理wordpress站群权威发布文字图片
  • 怎么创建网站相册建设网站查询
  • 免费cms网站管理系统东莞市网站建设平台
  • 各大网站收录提交入口wordpress上传格式
  • 优秀电商设计网站有哪些内容wordpress副标题些什么
  • 响应式网站建设特征网站页面格式
  • 让搜索引擎收录网站网站开发经验与教训范文
  • 怎么做app和网站购物怎么让谷歌收录我的网站
  • 用dw做网站wordpress免费主题演示数据
  • 龙口网站建设北斗导航2022最新版手机版
  • 中国互联网站建设中心wordpress添加顶和踩