-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 の man ページを参照してください。man ページLinux バージョンは次のとおりです。

frim unistd.hgetpid には、呼び出しプロセスのプロセス ID を取得するために使用できる呼び出しにもアクセスできることに注意してください。 man getpidを参照してください。

于 2012-09-28T19:58:25.403 に答える
0

killプロセスにシグナルを送信するためのシステムコールです。次のように、適切なシグナルを 2 番目のパラメーター (最初のパラメーターは受信プロセスのプロセス ID) として指定する必要があります。

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