当前位置: 首页 > 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/112993/

相关文章:

  • vs2015 建设微网站婚礼案例网站
  • 用ps做网站首页顶部图片推广措施
  • 网站编辑工作好做吗做网站要看什么书
  • 镇网站制作价格网页设计实训报告不足
  • 甘肃省城乡住房建设厅网站豆芽网站建设douyanet
  • 最新移动网站趋势做买东西的网站要多少钱
  • 亚马逊网站网址是多少上海十大公司排名
  • 建设企业管理类网站怎么做页游网站运营
  • joomla 2.5:你的网站建设_使用与管理 下载网站建设页面生成
  • 福鼎市建设局网站泰州网站设计
  • 商业网站源码蛋糕网站建设规划书
  • 网站统一做301成都网站建设四川冠辰科技
  • 公司支付网站服务费怎么做分录企业文化墙内容设计
  • 三门峡集团网站建设广州网络科技有限公司有哪些
  • 免费页面网站网站设计 广州
  • 制作手机软件网站小说网站论文摘要
  • 扶余手机网站开发公司注册网站大全
  • 郑州专业做网站的公司建公司网站外贸
  • 广州网站建设 八爪鱼x网站免费
  • wordpress站点备份品牌注册号
  • 机电建设有限公司网站云南网络营销推广
  • 网站网页设计培训机构新网页游戏网游
  • 网站除了做流量还需要什么软件吗上海医疗器械网站前置审批
  • 做一电影网站怎么赚钱平面设计网上接单
  • 电子商务系统 网站建设网站开发公司 商业计划书
  • 建站公司前景crm客户管理软件
  • 个人域名可以做公司网站么营销推广有哪些形式
  • 网站防止攻击更换wordpress语言包
  • 运用asp做购物网站的心得合肥小吃培训网页设计
  • 一个网站可以做多少地区词怎么通过域名做网站