What are equivalent to some Sys functions in Eio and other Eio questions

Hi! I’m experimenting with Eio and had some questions about functions like Sys.is_directory, Sys.file_exists, Sys.is_regular_file, etc.

I couldn’t find equivalents in Eio, looking for example in Eio.Path, and in Eio.Fs.

When you’re in the Eio world, is the expectation that you should solely be able to implement all I/O and file system operations without resorting to Unix and Sys ? (Or can these functions be run within a specific Eio wrapper?).

To give you some background, I’m implementing some code that walks recursively a unix file system tree (like the tree utils). And I need to figure out when to recurse after calling Eio.Path.read_dir (and decide what to do when identifying a symlink, etc.).

Another question is about executing an external command. Perhaps like Sys.command, or Unix.create_process, or some way to execute another executable and talk to it via its standard channels. Is there an Eio friendly way this can be done?

Thanks for you help!

2 Likes

Yes, Eio is missing lots of them at the moment. I’ve added a list here: Add missing file operations · Issue #510 · ocaml-multicore/eio · GitHub

Ideally, yes, but you can use Eio_unix.run_in_systhread to run Unix operations without blocking your Eio thread if you need to.

It just got added last week (#499): Running processes.

3 Likes

Great, that clarifies it for me. Thanks @talex5 ! :smiley: