问题
I am trying to do the following :
A central application, let us call it alpha, accepts user inputs in command lines, and based on those inputs, spawns other processes, call them bravo, charlie, etc. I want the parent and child to communicate both way. That is, alpha can read from and write to bravo (resp. charlie) and vice-versa
In C++, i can use fork() then exec(), and use FIFO-s - some excellent tutorials, are here : Pipe, Fork, and Exec - Two Way Communication Between Parent and Child Process and http://pronix.linuxdelta.de/C/Linuxprogrammierung/Linuxsystemprogrammieren_C_Kurs_Kapitel5b.shtml
But, I am wondering if the same, is also possible in D? I dont find much from web searching.
回答1:
As it happens, I remember your previous post here and drew a conclusion two questions are related. For what you asked in the previous question (Switch cas Alternative in D) you really do not need some complex interprocess communication - you basically need to call std.process.execute()
and get the output. Think of it as a function similar to popen().
Check that thread, and see how I implemented a very basic "fact" command using execute()... You should be able to build a much more robust solution on top of that code if you implement all necessary checks.
回答2:
It looks like D's standard library supports creating pipes and child processes.
http://dlang.org/phobos/std_process.html
来源:https://stackoverflow.com/questions/19845837/fifo-named-pipes-in-d