in reply to running a cmd in background and capturing the output

Why can you not do similar to the following ...

perl -e "print qx[du /dir/path]" &
... ?

use AnyEvent::Fork as a faster fork+exec seems to provide enough code for OP (could be overkill).

Not directly related to OP ...

I was thinking of IPC::Run, open3, etc. when I read OP but that by itself won't run in background (well, short of /some/program &).

That Proc::Background sure is nice for it takes care of fork, child pid, and the related bits. But of course does not have the facility to get to the output.

Then there is No::Worries::Proc which can provide command output. Also, installs default signal handlers that I do appreciate. I, however, cannot get over the namespace of No::Worries!? There are bound to be issues despite the gratuitous misuse of the namespace by virtue of being the "First!".

I wonder if P::Background could be modified to capture the output in minimum of code (unlike N::W::Proc), with addition of signal handlers ... though having read AE::Fork, I am leaning toward it.