【发布时间】:2020-11-04 00:06:09
【问题描述】:
我有一个使用 pthread_create() 创建两个线程的主程序。在一个线程中,我调用
线程一 { ... 系统(“二进制应用程序”);
}
System() 在内部创建一个子进程。我怎样才能从主程序中杀死那个“二进制应用程序”??
【问题讨论】:
标签: c linux multithreading pthreads
我有一个使用 pthread_create() 创建两个线程的主程序。在一个线程中,我调用
线程一 { ... 系统(“二进制应用程序”);
}
System() 在内部创建一个子进程。我怎样才能从主程序中杀死那个“二进制应用程序”??
【问题讨论】:
标签: c linux multithreading pthreads
不直接支持。
你需要 PID 来杀死一个进程,system() 是为同步执行某些命令而设计的——它不会暴露被调用命令的 PID。事实上,system() 可能会产生几个 PID,几代后代,可能是 /bin/sh,然后是你的 binary-application。
您将如何从外部进程(不是线程,完全外部进程)中杀死binary-application?但是,您这样做可能是您的杀戮线程如何获取 PID。
set an alarm on the command 可能更容易,或者在您自己的代码中调用 fork()(它为您提供 PID)和 exec()。无论如何,system() in a multithreaded program can be tricky,所以要小心。
【讨论】:
SIGINT?为此,您需要进程 PID。调用system时没有标准的获取方式。