Home > database >  How do I use pipes in xv6 to communicate between unrelated processes?
How do I use pipes in xv6 to communicate between unrelated processes?

Time:12-03

I understand how IPC works and how when you make a pipe before fork() the child/children can inherit the pipe for communication. However, I cant wrap my head around how I would do this for two unrelated processes? (i.e processes that are not the parent or children of each other?).

Im asking because Im trying to get one of my .c files to communicate with another .c file via pipes, but I dont know how that works explicitly in xv6. Any help/ideas would be greatly appreciated!!

CodePudding user response:

There are several ways to accomplish this, for something simple, try checking out popen(). One program can spawn an unrelated one and then can then read and write to each other.

https://man7.org/linux/man-pages/man3/popen.3.html

For other solutions you should look into FIFO files or even sockets as a means of IPC.

CodePudding user response:

Pipes are not able to communicate between 2 processes unless those two processes share a common ancestor, regardless of the Linux distro you use. If you are trying to allow 2 unrelated files to communicate, one of the exec() commands must be used in the child or parent process; this page may have what you're looking for.

  • Related