PHP マニュアル
前のページ |  | 次のページ

# expect_expectl

(no version information, might be only in CVS)

expect_expectl -- プロセスの出力がパターンに一致する・指定した時間が経過する・ あるいは EOF に達するのいずれかにあてはまるまで待ち続ける

## 説明

mixed expect_expectl ( resource expect, array cases, string &match )

プロセスの出力がパターンに一致する・指定した時間が経過する・ あるいは EOF に達するのいずれかにあてはまるまで待ち続けます。

match を指定すると、検索結果がそこに保存されます。

## パラメータ

expect

  事前に expect_popen() でオープンした Expect ストリーム。

cases

  expect case の配列。個々の expect case は数値添字の配列で、 以下のような形式となります。

  表 1. Expect Case の配列

  添字 | 値の型 | 説明 | 必須かどうか | デフォルト値
  --- | --- | --- | --- | ---
  0 | string | ストリームからの出力との比較対象となるパターン。 | yes |
  1 | mixed | パターンに一致した場合にこの関数が返す値。 | yes |
  2 | integer | パターンの形式。 `EXP_GLOB`、 `EXP_EXACT` あるいは `EXP_REGEXP` のいずれかひとつです。 | no | `EXP_GLOB`

## 返り値

一致したパターンに関連付けられた値を返します。

この関数の実行に失敗した場合は、 `EXP_EOF`、 `EXP_TIMEOUT` あるいは `EXP_FULLBUFFER` を返します。

## 例

例 1. expect_expectl() の例
`<?php // ファイルをリモートホストにコピーします ini_set ("expect.timeout", 30); $stream = fopen ("expect://scp user@remotehost:/var/log/messages /home/user/messages.txt", "r"); $cases = array ( array (0 => "password:", 1 => PASSWORD), array (0 => "yes/no)?", 1 => YESNO) ); while (true) { switch (expect_expectl ($stream, $cases)) { case PASSWORD: fwrite ($stream, "password\n"); break; case YESNO: fwrite ($stream, "yes\n"); break; case EXP_TIMEOUT: case EXP_EOF: break 2; default: die ("エラーが発生しました!\n"); } } fclose ($stream); ?>`

## 参考

expect_popen()

前のページ | ホーム | 次のページ
Expect 関数 | 上に戻る | expect_popen