Mircy, zgłupiałem całkowicie. Ten program https://pastebin.com/ns0wnLxr raz zwraca, że nieistniejący katalog istnieje, a raz że nie. Póki co zaobserwowałem to na dwóch maszynach wyposażonych w system debian8 i kompilator gcc w wersji gcc (Debian 4.9.2-10) 4.9.2 Dzieje się to nie tylko z jednym katalogiem. Inny mój program losowo identyfikuje typ danego pliku na komputerze, czasem nawet identyfikując go jako żaden z możliwych, to znaczy ani jako folder, ani plik zwykły, nie socket co jest przecież niemożliwe.
Nie wiem o co tu chodzi, więc mam prośbę do użytkowników #debian czy też osób posiadających wersję kompilatora gcc (Debian 4.9.2-10) 4.9.2 1. Pobrać program https://pastebin.com/ns0wnLxr 2. Skompilować gcc wtf.c -o wtf 3. Odpalić kilkanaście razy: for i in {1..100}; do ./wtf; done 4. Sprawdzić czy odpowiedź wypisana na ekran jest za każdym razem taka sama.
Ja sprawdzałem na dwóch maszynach z tą wersją kompilatora i wynik jest raz jedne raz drugi. Co przecież jest niemożliwe. Na dwóch innych wersjach kompilatora działa prawidłowo.
@kawazaki: @grlux: @vytah: No dobra, powoli zaczynam rozumieć co się dzieje. Podany przykład jest jedynie wstępem do większego problemu z którym się mierzę.
Dobrze rozumiem, że slash "/" na końcu ścieżki nie jest opcjonalny? To znaczy, odwołując się do /bin/bash/ program nie jest w stanie zidentyfikować pliku, ale po usunięciu slasha /bin/bash już jest. Z katalogami to nie działa. Oba /bin i /bin/ są prawidłowo rozpoznawane.
@Matt23: różne aplikacje linuxowe różnie traktują slasha na końcu. Ale też nie znalazłem potwierdzenia na jakim poziomie to przeszkadza. Podejrzewam, że jednak na poziomie systemu patrząc na komentarz:
Working on some old versions of SunOS, I developed the habit of appending /., because the system actually ignored a trailing / on a file name; for example, /etc/motd/ would refer to the file rather than being an error. Later versions of
debian8i kompilator gcc w wersjigcc (Debian 4.9.2-10) 4.9.2Dzieje się to nie tylko z jednym katalogiem. Inny mój program losowo identyfikuje typ danego pliku na komputerze, czasem nawet identyfikując go jako żaden z możliwych, to znaczy ani jako folder, ani plik zwykły, nie socket co jest przecież niemożliwe.
Nie wiem o co tu chodzi, więc mam prośbę do użytkowników #debian czy też osób posiadających wersję kompilatora
gcc (Debian 4.9.2-10) 4.9.21. Pobrać program https://pastebin.com/ns0wnLxr
2. Skompilować
gcc wtf.c -o wtf3. Odpalić kilkanaście razy:
for i in {1..100}; do ./wtf; done4. Sprawdzić czy odpowiedź wypisana na ekran jest za każdym razem taka sama.
Ja sprawdzałem na dwóch maszynach z tą wersją kompilatora i wynik jest raz jedne raz drugi. Co przecież jest niemożliwe. Na dwóch innych wersjach kompilatora działa prawidłowo.
#linux #jezykc #wtf
https://www.gnu.org/software/libc/manual/html_node/Testing-File-Type.html
Dobrze rozumiem, że slash "/" na końcu ścieżki nie jest opcjonalny? To znaczy, odwołując się do
/bin/bash/program nie jest w stanie zidentyfikować pliku, ale po usunięciu slasha/bin/bashjuż jest.Z katalogami to nie działa. Oba
/bini/bin/są prawidłowo rozpoznawane.