What are the trade-offs between different inter-process communication (IPC) methods in a Linux environment?