1

システムクラスの 1 つで C でプログラムを書いています。C コードを作成し、UNIX 環境で実行します。私はインターネット全体を見てきましたが、 kill(int PID) コマンドを機能させる方法が見つからないようです。コードは正常にコンパイルおよび実行されますが、

ps -u username

unixコマンドプロンプトでコマンドを実行すると(もちろん実行が完了した後)、Cコードで強制終了しようとしたすべてのプロセスがまだ実行されていると表示されます。Unix コマンド プロンプトから PID を手動で入力することでそれらを強制終了できますが、私の人生では、プログラム内でそれを行う方法がわかりません。

この特定のプログラムでは、usleep(100) を無限に呼び出すプロセスであるプロセス CC を強制終了しようとしています。終了するまで。

kill(C3, -9); を使ってみました。および execlp("kill", "kill", C3, (char *)0); のバリエーション しかし、まだ運がありません。ここで私が間違っていることを誰かが知っていますか? 私の唯一の推測は、kill コマンドに間違った PID パラメータが渡されているということですが、その場合、正しいパラメータを取得する方法がわかりません。

編集:また、 kill コマンドはゼロの値を返します。これは、コマンドの実行に「成功した」ことを意味すると思います。

編集:私の問題の解決策は、ずっと課題の指示にあったことに気付きました. うん。私は愚かだ。

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

int main(int args, char* argv[])
{
        //
        //Step 7
        //
        //Create process C3
        int C3=fork();
        if (C3==0)
        {
                execlp("CC", "CC", (char *)0);
        }
        else
        {
        usleep(500000);
        //
        //Step 8
        //
        int ps=fork();
        if (ps==0)
        {
                execlp("ps", "ps", "-u", "cooley", (char *)0);
        }
        else
        {
                wait(NULL);
                kill(C3);
        }
        }
        exit(0);
}
4

1 に答える 1