...and as itix said it have absolutely NO benefit at all. Just use process. You can use PR_ tags to turn off all cloning of the parent process structures, that way process will only use sizeof(struct Process) - sizeof(stuct Task) more memory.
However, if you want to get hacky... dos.library has some provision for tasks calling dos functions since OS V36. Basically it means that DoPkt() - which is used internally by dos - does create temporary msgport when needed.
Also, there are more problems with this: It seems the task-calling-dos support is incomplete. DOS pokes pr_Result2 directly, trashing innocent memory after struct Task. Also dos.library will happily put up a requester, which in turn will use pr_WindowPtr to determine where to put up the requester. This particular problem can be worked around by allocating sizeof(struct Process) for the task, and setting up the fields to some sane values (say: -1 for pr_WindowPtr).
In all, while it's possible to do this hack, or to offload the dos.library calling to some subprocess, in short: It is really not worth the trouble.