创建一个进程并将其杀死

时间:2012-09-28 19:56:10

标签: c++ linux ubuntu clang

我正在进行一项任务,要求我创建一个子进程然后等待300秒并终止该进程,而父进程应该在创建子进程后200秒被终止。我在Ubuntu中使用Clang ++编译器在C ++中执行此操作。我是C ++的新手,并且已经使用Java一段时间了。我现在拥有的可能更像是psuedocode而不是其他任何东西,我真的怀疑它是否有效。当我编译它给我关于我的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();
        }
    }   
};

3 个答案:

答案 0 :(得分:1)

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

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

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

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

答案 1 :(得分:0)

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

请参见kill的手册页,here's手册页的linux版本。

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

答案 2 :(得分:0)

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

kill(pid,SIGKILL);