Új hozzászólás Aktív témák
-
cidalain
veterán
válasz
jattila48 #19441 üzenetére
mondjuk sokat segített volna, ha látjuk mi az a HTML ami megjelent előtte.
pláne így, hogy kiderült, hogy egy hibaüzenet volt.
de a beírt sortól a hiba még nem szűnt meg, csak nem printelődik ki. így ugyan az működik amit akarsz, de valahol az a hiba még megvan.>> GearBest Club Veszprém << >> https://www.facebook.com/gbc.veszprem <<
-
DNReNTi
őstag
válasz
jattila48 #19444 üzenetére
Ezt mi ugy hivjuk a meloban, hogy "bekented szarral". Ahogy mar korabban is irtak neked, a problemat nem oldottad meg, csak elrejtetted. Ha ismered a hiba okat, marpedig most irtad le, akkor jobb lenne magat a hibat orvosolni, nem pedig csak a tuneteket.
Nem oltas, csak tanacs.
but without you, my life is incomplete, my days are absolutely gray
-
jattila48
aktív tag
válasz
jattila48 #19444 üzenetére
Közben azt hiszem rájöttem, mi a hiba.
$files=array_diff(scandir($dir),array('..','.'));
utasítás a file név tömbből kiveszi az első két elemet, a . és .. neveket, ezért a 0 és 1 index érvénytelen. Érdekes ez a PHP, nekem még elég szokatlan (C, C++ -hoz vagyok szokva).„Kétségtelen, hogy nem tudjuk, mit tegyünk, de felkészültek és elszántak vagyunk.” - Olaf Scholz német kancellár
-
#68216320
törölt tag
válasz
jattila48 #19998 üzenetére
Nem vagyok járatos a témában, de esetleg shell_exec() -el tehetsz egy próbát.
-
disy68
aktív tag
válasz
jattila48 #20000 üzenetére
Ha a program visszatérési értéke az exit code-ot jelenti, akkor érthető, mert az exit code-ok csak 255-ig értelmezettek linux rendszereknél míg windows-on 499-ig. Ha valóban erről van szó, akkor ezt ne így használd semmiképp sem.
“Yeah, well, you know, that’s just, like, your opinion, man.” — The Dude
-
jattila48
aktív tag
válasz
jattila48 #20003 üzenetére
Közben a C exit fv.-től olvasom, hogy az argumentumaként megadott egész érték alsó 8 byte-ja lesz a hívónak visszaadott statusz kód. A programom viszont egyszerűen return-nel adja vissza az értéket, nem hív exit-et.
„Kétségtelen, hogy nem tudjuk, mit tegyünk, de felkészültek és elszántak vagyunk.” - Olaf Scholz német kancellár
-
jattila48
aktív tag
válasz
jattila48 #20004 üzenetére
Lehet, hogy a Linux-on az int main(int,char **) fv. return-nel is csak az alsó 8 bitet adja vissza? Windowsban nem így van. Ritkán programozok Linux-ban, ez még fel sem tűnt.
„Kétségtelen, hogy nem tudjuk, mit tegyünk, de felkészültek és elszántak vagyunk.” - Olaf Scholz német kancellár
-
disy68
aktív tag
válasz
jattila48 #20003 üzenetére
Az exit code és fogalma az nem értelmezés kérdése. Linux alatt az exit code 0-255 között míg Windows alatt 0-499 között értelmezett (foglalt és szabad exit kódok).
Általában a programok a standard out/standard error csatornákat fogják írni, ez lesz a kimenete a programnak, a tényleges adat (persze lehet ezen kívül ezer meg egy módon kimenetet generálni, pl. fájlba írni, de ez most nem érdekes).
"A programom viszont egyszerűen return-nel adja vissza az értéket, nem hív exit-et."
A main-ből hívott return az kvázi az exit-nek fog megfelelni. A main-ből nem térünk vissza return-nel, hanem a standard out-ra kiírjuk az adatot, amivel csinálhat a hívó, amit szeretne. Ez okozza nálad is a problémát. Írd ki a program végén az eredményt és azt használd php-ből.“Yeah, well, you know, that’s just, like, your opinion, man.” — The Dude
-
sztanozs
veterán
válasz
jattila48 #20011 üzenetére
POSIX rendszerekben a visszatérési érték 0-255 között lehet (vélelmezhetően 8-bites rendszerekhet való kompatibilitási okok miatt).
Az int mérete rendszerenként más és más, általában a rendszer natív kódszélességét jelenti (x86 rendszereken 32 bit, 64 bites rendszereken lehet 64 bit, de pl 8 bites rendszereken csak 8 bit). A word (modern rendszerekben long) dupla int hosszú.256-ból úgy lesz 0, hogy a 256-tal (8bit) való maradékos osztás eredményét adja vissza a rendszer - illetve a visszatérési érték RETVAL & 0xff
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
jattila48
aktív tag
válasz
jattila48 #20014 üzenetére
Közben beledebuggoltam a programba (Windows alatt, Linux-on még nem), és a rendszer (Windows RTL, Linuxon libc) a main meghívása után valóban meghívja az exit fv.-t, aminek a main-ből return-nel visszaadott értéket adja át. Az exit ezt az értéket lehet, hogy Linux-on 8 bitre csonkolja, Windows-on nem. Vagyis szerintem itt lesz a kutya elásva, az exit-nél. Akkor is meg lesz hívva (a libc által), ha a main-ből return-nel térek vissza. Minden esetre az továbbra is igaz, hogy ez nem a main fv. specialitása. A válaszokat köszönöm, probléma felderítve. Most már legalább ezt is tudom. Igaz rá ment egy napom, hogy kiderítsem, linuxon miért nem működött a PHP szkriptem.
A Windows max. 499-es visszatérési értéke mellékszál, de azért még érdekel. Ha tudtok róla bővebbet, kérlek ne tartsátok magatokban.[ Szerkesztve ]
„Kétségtelen, hogy nem tudjuk, mit tegyünk, de felkészültek és elszántak vagyunk.” - Olaf Scholz német kancellár
-
disy68
aktív tag
válasz
jattila48 #20014 üzenetére
"Márpedig az int main(int, char **) fv. éppen olyan közönséges fv., mint bármelyik"
Ez nem igaz, a main függvény végén lesz egy system exit call, vagy a return által visszaadott értékkel vagy default 0, amennyiben nem volt explicit exit hívás vagy bármi egyéb runtime error.A fentiek alapján látszik, hogy az exit code az nem adat átadásra szolgál, hanem a process befejézés állapotának a közlésére. Processek közötti kommunikáció vagy adatcsere az nem ilyen egyszerű. Erről itt találsz egy összefoglalót. A táblázatban az anonymous pipe, amit én is írtam a standard out, ami a te esetedben a bevált és használt megoldás. Bármi más az vagy lassabb lesz (pl. file-ok) vagy sokkal komplexebb (pl. socket vagy message queue-k). Persze ragaszkodhatsz az exit code megerőszakolásához is, ez a te dolgod.
A standard out-ra kerülő adat a visszatérési érték a php shell_exec és exec függvényénél is (a megkötések benne vannak a dokumentációban).
A windows vonatkozást én néztem be, sorry, figyelmetlenül olvastam a dokumentációt.
“Yeah, well, you know, that’s just, like, your opinion, man.” — The Dude
-
jattila48
aktív tag
válasz
jattila48 #20029 üzenetére
A PHP exec visszatérési értékén a 3. argumentumát értem. A PHP értelemben vett visszatérési értéke az stdout-ra írt utolsó sor (ami egyébként a 2. argumentum utolsó eleme is lesz) sztringként. A 3. argumentumban kapom vissza az exe program visszatérési értékét, ezért értem azt az "igazi" visszatérési értéknek. Bocs, ha esetleg zavarosan fogalmaztam.
„Kétségtelen, hogy nem tudjuk, mit tegyünk, de felkészültek és elszántak vagyunk.” - Olaf Scholz német kancellár
-
jattila48
aktív tag
válasz
jattila48 #20030 üzenetére
Közben éppen az általad linkelt Wikipédia cikkben megtaláltam, hogy a
waitid
-del visszakaphatod mind a 4 byte-ot. Tehát valóban a többi wait* fv. az, amelyik lecsonkolja az exit kódot. Így méginkább igaz, hogy a main fv.-nek semmi köze a csonkoláshoz, ez nem az ő speciális viselkedése.„Kétségtelen, hogy nem tudjuk, mit tegyünk, de felkészültek és elszántak vagyunk.” - Olaf Scholz német kancellár
Új hozzászólás Aktív témák
- AirPods Pro 1 új fülek, új tartozékok! Komplett szett
- Kedvező ár! HP Probook 650 g2 laptop (15,6FHD/i3-G6/8GBDDR4/500GB/Magyar)
- Blitzwolf BW-WA3 Magyarországon vásárolt 2024. 01. 25. garanciális bluetooth hangszóró
- Bitmain Antminer KS5 20TH - 3150W KASPA BÁNYÁSZGÉP - HAVI 2390 USD TERMELÉS!
- Kedvező ár! Dell Latitude E5520 laptop (15,6/i3-G2/4GB/500GB/MagyarVil)
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen