[C, QNX, Momentics] argv(0)


(Kuba1gora) #1

Witam, mam dość nietypowe pytanie.

"Programuję" na zajęciach RTOSy (system operacyjny czasu rzeczywistego, QNX) w środowisku programowalnym Momentics (Host) w języku C z wykorzystaniem maszyny wirtualnej (Target).

Pisząc krótki program zawierający tablicę wskaźników argv, wprowadziłem dwa argumenty : 5 i 10. W odpowiedzi programu dostaję dodatkowo argv(0). Jest to relatywna ścieżka do wykonywanego programu. Ścieżka (nazwa ścieżki) składa się z : nazwaprojUżytkownik435t3453453 - i jakiś dziwny ciąg znaków. Dostałem polecenie żeby dowiedzieć się co to znaczy, ale nie mam pojęcia i w internetach niestety nic sensownego nie znalazłem.

Screen programy wraz z odpowiedzią.

Pozdrawiam.


(mktos) #2

Twój projekt nazywa się proj6.6Kuba13649728598336, dlatego argv[0] tak pokazuje. Spójrz na log kompilacji, że uruchamiany jest program /tmp/proj6.6Kuba13649728598336. Skoro uruchamiany jest z katalogu /tmp, to najprawdopodobniej jest traktowany jako plik tymczasowy, a ten ciąg liczbowy na koniec to pewna liczba, która powoduje, że nazwa pliku jest unikalna...

Ale sama ta liczba jest ciekawa. Istnieje bowiem coś takiego jak "unix time" (czas od tzw. epoki Uniksa), ilość sekund jakie upłynęły od północy 1 stycznia 1970. Ta liczba obecnie wynosi 1365277530. Kiedy z 13649728598336 usuniemy 4 ostatnie cyfry i taką listę sekund dodamy do początku epoki Uniksa to dostajemy godzinę 3 kwietnia tego roku, godzinę zdaje się 9 rano - czy to jest godzina o której uruchamiałeś program? Dziwnym trafem tak :wink:

Potem się okazuje, że od początku epoki do uruchomienia twojego programu minęło 1364972859833 milisekund, czyli jest nieco większa dokładność - milisekundy, a nie sekundy.

http://www.wolframalpha.com/input/?i=19 ... 2859833+ms

Ale zostaje 6 na koniec, które nie wiem skąd się bierze :slight_smile:


(Kuba1gora) #3

Tak coś w tym jest bo godzina kompilacji to około 9 rano :slight_smile: dzięki wielkie... zawsze coś