创建一个进程并杀死它

creating a process and killing it

本文关键字:进程 一个 创建      更新时间:2023-10-16

我正在处理一项作业,该作业要求我创建一个子进程,然后等待 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);