Próbuję utworzyć aplikację na Maca, która powinna zwrócić kod błędu w niektórych przypadkach. To jest pakiet Intela. (Jest to projekt Carbon C++, ale jest to prawdopodobnie nieistotne.)Kod powrotu z aplikacji Mac:
Standardowym sposobem na zrobienie tego w C++ byłaby funkcja zwracająca wartość, i to właśnie robię, więc myślę, że część jest poprawna . (Próbowałem również jednoznacznie wywoływać exit(42)
)
Pytanie brzmi: jak uzyskać tę wartość?
Gdy uruchamiam aplikację z terminala pod numerem open myapp
, zwracana jest zawsze wartość 0
, nawet jeśli zawsze zwracam inną liczbę. (sprawdzane przy użyciu echo $?
)
Czy jest to wartość zwracana przez otwarte polecenie i czy wartość zwracana przez moją aplikację jest gdzieś połknięta?
Zawsze otrzymuję kod powrotu 0
, jeśli uruchomię go z innego programu przy użyciu execve
(w ten sposób aplikacja jest przeznaczona do użycia).
Czy można odzyskać kod powrotu z aplikacji?
Sidenote: Potrzebuję programu, żeby był w pakiecie.
Robię to. To nie pomaga. – darklon
Istnieje różnica między 'open your.app' i wykonywanie' your.app/Contents/MacOS/yourApp'. Ten pierwszy nie podaje kodu powrotu aplikacji, ale drugi robi. Tak napisał Paweł. – Yuji
Zrozumiałem i to był dobry pomysł. W rzeczywistości tylko ten ostatni wydaje się działać z execve(), ale kod powrotu nie pojawia się, otrzymuję 0, gdy czekam na proces z wait(), nie to, co zwróciłem z exit(). Próbowałem też z terminalem, i tam też dostałem 0. – darklon