How to communicate between different programs?

Suppose you have two C++ applications that are running simultaneously. What's the best way to communicate between them (I'm just curious, no practical purpose here)? Using files? Can you give a brief example if it is related with files and isn't there a better way?

What about communicating between C++ and C# or some other programming language? What's the easiest way to do that?
I suppose the first question is, where are both programs running?

- On the same machine? If so, same user ID or different user IDs.
- On different machines within the same subnet.
- On machines visible to each other over the internet.

For close proximity, you have files, shared memory, domain sockets, network sockets, plus some other things which might be OS specific.
How about the programs are running on the same machine and under the same user
This is called "inter process communication". Now you know what it's called, you can look it up easily:

https://en.wikipedia.org/wiki/Inter-process_communication

There are many options.
Communication between programs is (usually) less dependent on the language used to write the programs, and more dependent on the OS on which the programs run. Most OSs have a variety of alternatives for IPC, and determining which is "best" depends on what your specific needs are.

For example, if you have two programs that run in batch mode once a month, then a simple file may be adequate. If the programs are exchanging data more dynamically, then sockets might be more appropriate. If they're cooperating in the manipulation of system peripherals or external hardware devices, then semaphores might be needed.

Your question is good for discussion purposes, but nearly unanswerable with the given information. The reason that so many choices exist for IPC is that there are many different kinds of IPC, all with their own characteristics and needs.
Topic archived. No new replies allowed.