コマンドを起動して2秒待ってからコマンドを終了せずに出力を返すにはどうすればよいですか?

コマンドを起動して2秒待ってからコマンドを終了せずに出力を返すにはどうすればよいですか?

私はshell_execを使用して実行され続けるプログラムを起動するbashスクリプトを呼び出すPHPでコマンドを実行しようとしていますが、時にはプログラムでエラーが発生して終了します。必要なのは、スクリプトを呼び出して行う方法です。 2秒のメソッドがプログラムの出力を返した後、プログラムが正しく起動し、Linuxで実行され続ける場合にのみPIDを返したいのですが、PHPは引き続き実行されます。エラーが発生して閉じた場合は出力が必要です。そのエラーについてこれが私が試したものです。

#!/bin/bash

ezstream -c $1 &
ezpid=$!
echo $ezpid
sleep 2
disown

エラーが発生すると正常に返され、エラーメッセージが表示されますが、正常に実行された場合はプログラムが実行を続けるため、PHPは中断され返されません。 2秒後に実行を続けてもスクリプトを返すにはどうすればよいですか?

Bashを使ってこれを行うにはどうすればよいですか? Processクラスを使用してC#でこれを実行できます。

    Process ez = new Process();
    //ez.parameters
    ez.Start();

    if (ez.WaitForExit(2000))
    {
        string message = ez.StandardOutput.ReadToEnd();
        return message;
    }

    return ez.Id.ToString();

ベストアンサー1

これを行う必要があります。

#!/bin/bash

ezstream -c $1 >log.txt 2>error.txt & 
ezpid=$!
echo $ezpid
sleep 2
if ps | grep $ezpid ; then
    echo ezsteam is still running!
    cat log.txt
    exit 0
else
    echo ezstream is dead
    cat error.txt
    exit 1
fi

おすすめ記事