-1

我正在处理一项任务,该任务要求我创建一个子进程,然后等待 300 秒并终止该进程,而父进程应在创建子进程后 200 秒被终止。我正在使用 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();
        }
    }   
};
4

3 回答 3

1

您的代码的结构类似于 Java 命令行程序,其中主入口点是main()在某个(非特定)类中命名的函数。C++ 程序也使用 main() 作为入口点,但它必须是顶层的函数,而不是类方法。

通常,您将拥有一个最小的 C++ 程序:

int main(int argc, char *argv[])
{
    ...
    return 0;
}

在您的程序中,最好避免完全上课;考虑到您只运行一些简单的程序代码,没有必要。

于 2012-09-28T20:21:48.993 回答
0

系统kill调用需要几个参数:要杀死的进程的进程 ID和特定的信号。没有没有参数的调用版本,例如只是杀死当前进程。

查看 kill 的手册页,这是手册页的 linux 版本。

请注意 frim unistd.h您还可以访问getpid 可用于获取调用进程的进程 ID 的调用,请参阅man getpid

于 2012-09-28T19:58:25.403 回答
0

kill是用于向进程发送信号的系统调用,您必须指定正确的信号作为其第二个参数(第一个是接收进程的进程 ID),如下所示:

kill(pid,SIGKILL);
于 2012-09-28T20:00:02.490 回答