Međuprocesna komunikacija (IPC) je skupina tehnika koje se koriste u računalnom programiranju koje omogućuju interakciju različitih dijelova softvera. IPC je često olakšan računalnim operativnim sustavom, iako postoje alternativne metode. Točan oblik ove komunikacije između softvera može varirati, u rasponu od izravnih poruka do središnjeg skladišta gdje se informacije pohranjuju i dohvaćaju. Međuprocesna komunikacija može pružiti prednosti kao što su bolje performanse, manje potrošenih računalnih resursa i poboljšana sigurnost.
U svijetu programiranja, o softveru se govori u smislu procesa, ili jednog dijela koda, koji se može pokrenuti ili izvršiti na središnjoj procesorskoj jedinici (CPU) računala. Mnoge aplikacije zapravo koriste više od jednog procesa, što može povećati performanse i stabilnost. Web preglednik s više otvorenih stranica može koristiti zaseban proces za učitavanje svake stranice; ovo izolira svaku stranicu od ostalih i sprječava loše ponašanje web-stranice da sruši cijeli preglednik. U ovom primjeru, svaki proces odgovoran za prikazivanje web stranice komunicira s jednim ili više procesa koji upravljaju drugim aspektima preglednika kao što su komponente korisničkog sučelja.
Većina računalnih operacijskih sustava nudi nekoliko različitih mehanizama za međuprocesnu komunikaciju. Neke druge softverske tehnologije također nude podršku za IPC. Štoviše, IPC se može koristiti na jednom računalu ili preko mreže. Ovi se mehanizmi mogu razlikovati u načinu na koji se implementiraju, ali većina se može grupirati u nekoliko kategorija na temelju načina na koji se komunikacija odvija.
U nekim slučajevima, poruke se razmjenjuju izravno između procesa, često jednosmjerno ili asinkrono. Nekoliko IPC metoda koje rade na ovaj način uključuju signale, cijevi i utičnice. Međuprocesna komunikacija se također može odvijati korištenjem određene lokacije na kojoj se podacima može pristupiti više od jednog procesa. Jedan primjer toga je zajednička memorija, tehnika u kojoj više procesa pristupa istom dijelu memorije računala radi razmjene informacija. Metoda koju programer može odabrati ovisi o brzini i količini potrebne razmjene podataka kao io drugim razmatranjima.
Postoji mnogo razloga zašto bi programer mogao htjeti koristiti međuprocesnu komunikaciju u svojim kreacijama softvera. Podjela velike aplikacije na mnogo manjih procesa koji komuniciraju putem IPC-a može povećati performanse kao i sigurnost. Program može pokrenuti i završiti procese prema potrebi umjesto da se sve komponente izvode odjednom i troše hardverske resurse. Ako dio programa treba poseban pristup hardveru računala ili drugom pokrenutom softveru, jedan ili više procesa mogu raditi pod administratorskim ili “root” računom dok se ostatak programa izvodi kao obični korisnik.