创建一个进程并杀死它
creating a process and killing it
我正在处理一项作业,该作业要求我创建一个子进程,然后等待 300 秒并终止该进程,而父进程应在创建子进程后 200 秒终止。 我在 Ubuntu 中使用 Clang++ 编译器在 Ubuntu C++中执行此操作。 我对C++很陌生,并且已经使用Java一段时间了。 我现在拥有的可能比其他任何东西都更像伪代码,我真的怀疑它是否有效。当我编译时,它给了我关于我的 kill() 调用的错误,我已经尝试了像 *this.kill() 或 this.kill() 这样的东西,但都没有奏效。如何使用 kill 命令? 另外,这段代码看起来会做我想做的事吗? 恐怕还差得远。
#include <iostream>
#include <unistd.h>
using namespace std;
class process{
public:
process(){
main();
}
void main(){
process *parent = new process();
int pid;
pid=fork();
if (pid == 0)
{
sleep(200);
kill();
}
else
{
sleep(100);
kill();
}
}
};
您的代码结构类似于 Java 命令行程序,其中主入口点是某个(不特定的)类中名为 main()
的函数。C++程序也使用 main() 作为入口点,但它必须是顶层的函数,而不是类方法。
通常,您将拥有最少的C++程序:
int main(int argc, char *argv[])
{
...
return 0;
}
在你的程序中,最好避免完全创建一个类;考虑到你只运行一些简单的过程代码,这是没有必要的。
kill
系统调用需要几个参数:要终止的进程的进程 ID 和特定信号。没有没有参数的调用版本,例如只是杀死当前进程。
以了解 kill,这是手册页的 Linux 版本。
请注意,frim unistd.h 您还可以访问可用于获取调用进程的进程 ID 的getpid
调用,请参阅 man getpid。
kill
是用于向进程发送信号的系统调用,则必须指定正确的信号作为其第二个参数(第一个是接收进程的进程 ID),如下所示:
kill(pid,SIGKILL);
相关文章:
- c++多进程编写一个唯一的文件
- 如何在C++中将函数发送到另一个进程
- 如何从另一个进程解开全局钩子?
- 如何使用带有矢量的 winapi 读取进程内存从另一个进程读取缓冲区?
- 为什么一个进程会挂在RtlExitUserProcess/LdrpDrainWorkQueue中?
- 先进先出:一个进程永远不会从管道读取
- 从不同进程中的另一个线程挂起/恢复线程或进程
- 是否可以将子进程的 stdout 重定向到父进程中的另一个文件?
- 如何在MPI中将矩阵从一个进程转移到另一个进程
- 如何使用一个信号灯同步 3 个进程?
- 将vector<vector<double>>从x86平台中创建的一个进程发送到x64中构建的另一个进程的最快方法是什么
- 从执事创建一个分叉进程
- 带有 QSharedMemory 的 IPC,如果其中一个进程挂起,则存在风险
- 通过 c++ 中的 udp 套接字将派生类对象从一个进程发送到另一个进程
- C++ 减慢另一个正在运行的进程
- 与 Python 中子进程中的另一个应用程序的交互式会话
- 如何:监视Windows中另一个进程的文件访问?
- C++程序将进程置于前台(如果已在运行),否则创建一个新进程
- 如何将我的 cli 信息(变量等)共享到子进程,这是一个 bash shell 脚本
- 如何在c++中处理两个进程(一个OpenGL应用程序通过相机运行手势)