最近在做的一个东西需要用到php去调用一个应用程序,而程序却不一定会第一时间就返回结果(执行效果有点像top命令),这就导致如果用php直接exec执行这个程序的话,php页面将会处于一直等待的状态中,直到最大超时时间到了后,会返回网关错误(我用的nginx做前端)。我自己曾试过在要执行的命令后面加&,使其变成后台程序,这样php就会立即返回了,不过用grep进程列表获取该程序的进程的时候,就发现如果多个空格就会导致搜索不到指定的进程,这样就没法kill掉这个进程了。于是又写了一个C程序,以实现这个C程序可以把一条命令转成守护进程执行,并且返回该守护进程的pid,这样我就可以直接在php里把返回的pid存起来,到时候直接kill掉就OK啦~