私は確かに決定論的な方法でawkを実行する方法を探しています。つまり、結果は入力のみで判断する必要があります。言い換えれば、プログラムが出力されていることを前提に、繰り返し可能であることを知りたい。awkの確定的な実行
これは、システム時刻や/dev/random
などの変更内容のファイルなど、非決定的な入力ソースへのアクセスを削除することを意味します。
私はgawkのサンドボックスフラグを見ましたが、これは助けにならないと思っています。ZeroVM。
私は確かに決定論的な方法でawkを実行する方法を探しています。つまり、結果は入力のみで判断する必要があります。言い換えれば、プログラムが出力されていることを前提に、繰り返し可能であることを知りたい。awkの確定的な実行
これは、システム時刻や/dev/random
などの変更内容のファイルなど、非決定的な入力ソースへのアクセスを削除することを意味します。
私はgawkのサンドボックスフラグを見ましたが、これは助けにならないと思っています。ZeroVM。
一般的には可能ではないと思います。実行するとたとえば、このスクリプトは、それが依存していないにもかかわらず、異なる値を出力します任意の入力ファイルの
awk 'BEGIN{print systime()}'
しかし、あなただけの入力ファイルに依存する機能、繰り返し可能な方法でスクリプトを書くことができますし、あらかじめ定義された出力順序を持つ(配列の順序の反復は予測できない)、システムコールを行わない、またはランダムを使用しない。
ZeroVMは、アプリケーションをサンドボックス化し、すべての非決定性システムコールを削除します。例として、スケジューリングがない(そのスケジューリングが非決定論につながるので)、実行は毎回1970年1月1日から開始されます(特定のシステムコールによって時刻が進められます)。
私はもうZeroVMがインストールされたシステムを持っていませんが、awkをコンパイルするのは難しいことではありません。事実、私はbusyboxがZeroVMで動作していたことを覚えています。busyboxはsome form of awkです。
お役立ち情報私はこれまでの文書を見てきました。明日それを深く見ていきます。うまくいけば私はドッカーのイメージを回転させることができます。セットアップはやや複雑に見えましたが、不可能ではありません。 – ateles
通常の操作でawkはどのような副作用を生成しますか? –
わかっても分かりません。システムクロック、状態などに依存するようにawkプログラムを書く多くの方法があります。これは決定論を破壊します。 – ateles
あなたは何について話していますか?質問を編集して[mcve]を追加してください。 –