Skip to content

Repository files navigation

Ada Process API (spawn)

Build Alire

This library provides simple API to spawn processes and communicate with them. We provide two implementations of the same API - the integrated into Glib event loop and the independent.

Install

Using alire

Run alr get --build spawn or alr get --build spawn_glib.

Also you can build from the cloned repository directory with

alr build

For spawn_glib do this in packages/glib subdirectory:

cd packages/glib
alr build

Build from sources

Clone repository or unpack source archive, then run

make all install PREFIX=/path/to/install

Usage

  1. Add with "spawn"; or with "spawn_glib"; to your project file.
  2. Create a process object:
    P : Spawn.Processes.Process;
  3. Assign program name
    P.Set_Program ("/bin/bash");
  4. (Optional) Assign command line arguments, working directory, environments variables.
  5. Assign an event listener
    P.Set_Listener (L'Unchecked_Access);
  6. Start the process:
    P.Start;
  7. (Glib independent case) With no event loop integration you should drive it by you-self periodically calling
    Spawn.Processes.Monitor_Loop (1);

The listener will get these events:

  • Standard_Output_Available
  • Standard_Error_Available
  • Standard_Input_Available
  • Started
  • Finished
  • Error_Occurred
  • Exception_Occurred

See an example in the spawn test

State diagram

Next diagram shows process states and emited events during its life:

state diagram

You should NOT finalize process object until it in Not_Running state.

Maintainer

AdaCore

Contribute

Feel free to dive in! Open an issue or submit PRs.

License

Apache-2.0 © AdaCore

About

No description, website, or topics provided.

Resources

Code of conduct

Contributing

Stars

17 stars

Watchers

27 watching

Forks

Releases

Packages

Contributors

Languages