Hirdetés
- iPhone topik
- Megtartotta Európában a 7500 mAh-t az Oppo
- Google Pixel topik
- Európába készül, F1-es festéssel áll a Realme rajtrácsra
- One mobilszolgáltatások
- Xiaomi 15T - reakció nélkül nincs egyensúly
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Android 16-ra nyitott az egyik legmenőbb csukható
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- „Új mérce az Android világában” – Kezünkben a Vivo X300 és X300 Pro
Új hozzászólás Aktív témák
-
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. -
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.
-
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.
-
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. -
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
-
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. -
#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.
-
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). -
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.
-
cidalain
veterán
Új hozzászólás Aktív témák
- Luck Dragon: Asszociációs játék. :)
- AMD Navi Radeon™ RX 9xxx sorozat
- gban: Ingyen kellene, de tegnapra
- Synology NAS
- Hollow Knight és Silksong
- Autós kamerák
- Vírusirtó topic
- Elektromos cigaretta 🔞
- Arc Raiders
- Fortnite - Battle Royale & Save the World (PC, XO, PS4, Switch, Mobil)
- További aktív témák...
- iKing - Samsung Galaxy A56 5G 5G sebesség, nagy kijelző, stabil üzemidő 8/256 GB
- Asus TUF A15 FA507NUR 15.6" FHD IPS Ryzen 7 7435HS RTX 4050 16GB 512GB NVMe magyar vbill gar
- iKing - Xiaomi 14T Pro Titan Gray Vékony, prémium kivitel, nagy kijelző 12/512
- Samsung NX300 MILC + 18-50mm + 50-200mm
- Apple Macbook Air 13,6 M4 10C CPU/16GB/256GB - Égkék - HUN - 55 Ciklus - 100% akku , 2,5 év gari
- BESZÁMÍTÁS! Gigabyte Z170X-Ultra Gaming Z170 chipset alaplap garanciával hibátlan működéssel
- BESZÁMÍTÁS! Asrock B450M R5 5600X 16GB DDR4 512GB SSD RX 6700 10GB Zalman T4 PLUS A-Data 750W
- Telefon felvásárlás!! iPhone 16/iPhone 16 Plus/iPhone 16 Pro/iPhone 16 Pro Max
- 2 db (130 / 131) - Lenovo Legion Pro 7 (16IRX9H) - Intel Core i9-14900HX, RTX 4080
- Bomba ár! Lenovo X1 Carbon G7: i5-8365U I 16GB I 512GB SSD I 14" FHD I HDMI I Cam I W11 I Gari!
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest



