コマンド実行

Curlでコマンドを実行する方法を説明します。Curlでコマンドを実行するには、spawn-host-processもしくはspawn-host-shellプロシージャを利用します。ここではpingコマンドを実行する例を紹介します。

{curl 6.0 applet}

{import * from CURL.RUNTIME.HOST-PROCESS}

{value
    def host-process =
        {spawn-host-process 
            read-stdout? = true,
            read-stderr? = true,
            “ping”,
            {StringArray “www.curlap.com“}
        }
    {with-open-streams stream = {host-process.read-open-stdout} do
        {while not stream.end-of-stream? do
            {output {stream.read-line}}
        }
    }
}

spawn-host-processプロシージャの引数にコマンド名(もしくはコマンドのURL)をセットし、引数をStringArrayで渡します。結果はHostProcessクラスのread-open-stdoutメソッドにて標準出力をTextInputStreamにて受け取ることができます。

実行結果

Reply from xxx.xxx.xxx.xxx: bytes=32 time=9ms TTL=48

Reply from xxx.xxx.xxx.xxx: bytes=32 time=9ms TTL=48

Reply from xxx.xxx.xxx.xxx: bytes=32 time=9ms TTL=48

Reply from xxx.xxx.xxx.xxx: bytes=32 time=9ms TTL=48

Ping statistics for xxx.xxx.xxx.xxx:

    Packets: Sent = 4, Received = 3, Lost = 1 (25% loss),

Approximate round trip times in milli-seconds:

    Minimum = 9ms, Maximum = 9ms, Average = 9m