0

基本的なコマンドの実行、パイピング、リダイレクト、バックグラウンド プロセスの実行などの基本的な機能を処理するシェルを作成するためのプログラムを作成しています。 pid と共に kill コールを送信できるようにプロセスを変更します。AC プログラムからバックグラウンド プロセスの pid() を取得する方法はありますか? コマンドを実行するために、コマンドラインからの入力を配列に取り、それを解析し、コマンドを arr[0] に入れ、その後の引数を後続のインデックスに入れます。システムの PATH を別の配列に取り、それらを文字列として格納します。 strtok と delim オプションを :, として使用することにより、この後、パスをコマンドと連結し、execv() を実行します。

バックグラウンドプロセスを強制終了する必要があるこの部分で立ち往生しています。提案があれば非常に役立ちます。

前もって感謝します。

4

3 に答える 3

1

次のようにする必要があります。

#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>

int main()
{
    pid_t pID = fork();
    if (pID == 0) {
        execl("/bin/ls", "/bin/ls", "-r", "-t", "-l", (char *) 0);
    } else {
        waitpid(pID, NULL, 0); // wait for child process
    }
}
于 2012-06-04T10:50:27.133 に答える
1

fork親プロセスの子の PID を返し、それをどこかに保存してから、それを使用して強制終了しますか?

于 2012-06-04T10:50:54.400 に答える
0

(childprosses で) getpid()を呼び出すか、 fork()を呼び出すときに子の pid が親に返されます。

于 2012-06-04T11:32:46.997 に答える