搜尋

首頁  >  問答  >  主體

shell - PHP 结束 C程序循环

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int loop;

void Stoploop(void){
    loop=0;
}

int main(int argc, char *argsv[]){
int i;
loop=1;
while(loop==1){
    printf("%d/n",i);
    i++;
}
return 0;
}

举例如上,在linux下开始运行此程序。
PHP端调用shell_exec();执行该程序后,如何终止该程序循环?

伊谢尔伦伊谢尔伦2829 天前760

全部回覆(6)我來回復

  • 大家讲道理

    大家讲道理2017-04-11 09:03:35

    用进程间通信,或者简单点在c里注册信号进行终止,然后在php里向启动的c进程发新信号。

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-11 09:03:35

    通常来讲应该编译成动态库so交由脚本调用,而且这样的无限循环应该开线程,然后需要停止的时候直接杀掉线程就好了。

    回覆
    0
  • 高洛峰

    高洛峰2017-04-11 09:03:35

    你这个C程序是一个常驻进程啊。要终止,就是要杀掉这个C程序。直接调kill命令。或者你这个C程序注册了信号,可以发信号终止。

    本质上你就是PHP和C进程间通信。
    你可查一下进程间通信IPC相关的技术文档了解。

    回覆
    0
  • 天蓬老师

    天蓬老师2017-04-11 09:03:35

    当loop!=1的时候 就结束循环了

    回覆
    0
  • 迷茫

    迷茫2017-04-11 09:03:35

    比较简单粗暴的方式,同样调用shell_exec(),"kill -9 $pid" 来终止这个程序

    回覆
    0
  • 巴扎黑

    巴扎黑2017-04-11 09:03:35

    C代码改一下, loop=1; 改成变量的形式

    回覆
    0
  • 取消回覆