[ djura1 @ 13.07.2011. 07:30 ] @
Jedno možda glupo pitanje, ali ovo me zbunjuje...
Napravio sam mali program u C++ koji pokreće eksterni proces. Razvio sam ga na linuxu, i koristim execvp() za pokretanje pomenutog procesa.
Sad, hteo sam da ga prepravim da radi i na Windows-u, i spremio sam se na mnogo cimanja, ali samo sam ga iskompajlirao i sve radi OK. I to mi nije jasno .
Mislio sam da je execvp() Unix funkcija i da na Win-u treba da koristim CreateProcess(). Čini mi se da sam negde čuo da je Windows 7 POSIX kompatibilan, pa možda zbog toga radi? I ako je tako, da li bi radilo na Vista/XP/nekom starijem Windows-u?
Šta bi mi bilo bolja opcija, da ostavim kako jeste, ili da prepravim koristeći CreateProcess()?
[ Nedeljko @ 13.07.2011. 09:06 ] @
Proizvođač kompajlera se trudi da programeru ponudi što više. Naravno da će da isporuči POSIX funkcije ako ih je moguće implementirati, ako proceni da će na taj način biti konkurentniji. Probaj sa druge strane da koristiš fork() funkciju pod Windows-om. Neće moći ni sa jednim kompajlerom, zato što Windows kernel jednostavno nema tu mogućnost.

Zaključak: implementiranje standardnih funkcija ne treba da bude nikakvo iznenađenje.
[ djura1 @ 13.07.2011. 11:07 ] @
Hoćeš da kažeš da je funkcija implementirana u standardnoj biblioteci? Ja sam mislio da je specifična za Linux kernel.
Još jedno pitanje: ako program statički linkujem, on bi trebalo da radi na svakom Windows-u koji je podržan od strane kompajlera (mingw32 u ovom slučaju). Jesam li u pravu?
[ kiklop74 @ 14.07.2011. 02:28 ] @
Ono sto je garantovano portabilno u C-u je komanda system.

http://www.cplusplus.com/reference/clibrary/cstdlib/system/
[ Nedeljko @ 14.07.2011. 07:26 ] @
Citat:
djura1: Još jedno pitanje: ako program statički linkujem, on bi trebalo da radi na svakom Windows-u koji je podržan od strane kompajlera (mingw32 u ovom slučaju) Jesam li u pravu?


Ne. Windows i Linux nisu binarno kompatibilni. Moraš program kompajlirati za sistem na kome će se izvršavati.
[ djura1 @ 14.07.2011. 13:33 ] @
Naravno, to znam. Mislio sam, ako iskompajliram i statički linkujem program na Windows 7, da li će raditi na XP/2000 itd windowsu. U pitanju je mingw32 kompajler za Windows.
Ali dobro, ukapirao sam. Hvala na pomoći.
[ Nedeljko @ 14.07.2011. 17:07 ] @
Različite verzije Windows-a su u najvećoj meri binarno kompatibilne, ali ne 100%. Tvoj program će najverovatnije raditi na svim verzijama Windows-a, recimo počev od verzije 2000, ali da bi u to bio siguran, to treba isprobati.