我正在进行一项任务,要求我创建一个子进程然后等待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();
}
}
};
答案 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);