c/c++语言开发共享如何从系统函数调用中删除后台进程

如何终止使用C语言的系统函数调用执行的后台进程。 例如,我有一个编译的应用程序调用“fooprocess”。 然后我想编写一个程序,使用系统函数在后台执行fooprocess应用程序,请在下面的代码中查看,

const char app[] = "fooprocess &"; system(app); 

如您所见,有一个“&”字符,以便我可以在后台运行fooprocess应用程序。 我该怎样杀死这个过程?

非常感谢。

    要与流程进行交互,您需要其PID。 我不确定系统是否可行,但另一种方法是使用fork + exec自行分叉。

    你绝对不能使用system("foo &"); 创建后来可以监视/终止的后台进程。 任何这样的使用都有一个巨大的固有错误:即使你知道pid,也无法判断带有该pid的进程是你最初运行的进程,还是一个完全不同的进程,后来恰好获得了相同的pid。

    要解决这个问题(以及无数其他你不想考虑的问题,否则它会让你头疼)你应该忘记你曾经学过system函数并用forkexecposix_spawn创建你的子进程。 这将导致直接的子进程(您当前的方法创建的孙子进入孤立并被init进程接收),您可以wait / wait执行,直到您执行wait操作,子进程的pid 属于您并且无法重复使用,因此向其发送信号等是安全的。

    我用这个尝试了你的问题:

     ps -axc|grep -i myApp|awk '{print $1}' | tr -d 'n' | xargs -0 kill 

    你可以把它放在system()中,如下所示:

     system("ps -axc|grep -i myApp|awk '{print $1}' | tr -d 'n' | xargs -0 kill"); 

    那可行。

      以上就是c/c++开发分享如何从系统函数调用中删除后台进程相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/545555.html

      (0)
      上一篇 2021年1月10日
      下一篇 2021年1月10日

      精彩推荐