Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 6 odgovora
  • 3.030 pregleda

Najnovija ↓

execvp() radi u Windows-u? 13.07.2011. u 08:30 · pre 186 meseci #1
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()?
Re: execvp() radi u Windows-u? 13.07.2011. u 10:06 · pre 186 meseci #2
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.
Potpis
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
Re: execvp() radi u Windows-u? 13.07.2011. u 12:07 · pre 186 meseci #3
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?
Re: execvp() radi u Windows-u? 14.07.2011. u 08:26 · pre 186 meseci #5
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.
Potpis
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
Re: execvp() radi u Windows-u? 14.07.2011. u 14:33 · pre 186 meseci #6
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.
Re: execvp() radi u Windows-u? 14.07.2011. u 18:07 · pre 186 meseci #7
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.
Potpis
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme