O'Reilly logo

Exploring Expect by Don Libes

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Chapter 11. Handling Multiple Processes Simultaneously

In the previous chapter, I introduced the concept of a spawn id and how the spawn_id variable could be used to change the attention of Expect commands between multiple processes. In this chapter, I will demonstrate a mechanism that provides a more explicit way of denoting the current spawn id. Explicitly naming spawn ids makes it possible to handle multiple spawn ids in the same command.

I will also cover the expect_before and expect_after commands, which can greatly simplify scripts by performing common tests (such as for eof and timeout) in only a single command of the script.

Implicit Versus Explicit Spawn Ids

The previous chapter demonstrated various ways of interacting with two processes, an ftp process and a write process. By setting the variable spawn_id, the send and expect commands can communicate with either process. Here is an example of that from the previous chapter:

set spawn_id $ftp
send "get $file1\r";                            expect "220*ftp> "

set spawn_id $write
send "successfully retrieved file\r"

set spawn_id $ftp
send "get $file2\r";                            expect "220*ftp> "

It is also possible to supply send and expect with an explicit parameter representing a spawn id. In this case, the commands do not use the spawn_id variable. Instead the spawn id is passed as an argument following the flag "-i“. For example:

send -i $write "successfully retrieved file\r"

This command sends the string to the write process. The value of spawn_id is irrelevant, as send ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required