Nowe posty

Autor Wątek: Problem z biblioteką sys/stat.h (nie rozpoznaje pliku typu ścierzka)  (Przeczytany 2563 razy)

Offline Filys

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 28
    • Zobacz profil
Chciałem napisać sobie programik pod linucha. Co będzie mi znajdował, jakiś poszukiwany pliczek na dysku. Postanowiłem, że zapisze tych parę linijek i się czegoś nauczę, a nie skorzystam z system("tu funkcja z basha").

No to co? wrzuce se napotkane folderki do vectora a potem bede je bral pokoleii i przegladal. jak wewnatrz kolejna ścierzka to znowu wrzucam.
Jedyne co musze zrobić to rozpoznać że coś jest directory. mam przecierz fajne macra do tego, proste nie?
Nie. Bo te makra nie rozpoznają directory i to takiego jak np. "/home".
Sprawdziłem. #file /home => directory.

Wtf?

Wczoraj zmarnowałem 2 h myśląc co mam źle aż uruchomiłem drugi program i wyszło mi, że po prostu /home nie jest żadnym znanym typem pliku.

Czy ktoś może mi podpowiedzieć jak rozpoznać na 100% że coś jest plikiem typu directory? I czemu biblioteka która jest w standardzie jest takim crapem albo też ja jestem jełop i czegoś nie rozumiem?

pierwszy program wyszukiwareczka:
http://ideone.com/u6xaLY

drugi(taki bardziej do nauki co napisałem by mieć do czego wrócić jakbym w przyszłości potrzebował), sprawdzian:

http://ideone.com/CgSCuF

Pozdrawiam i z góry dziękuję za odpowiedzi i pomoc.

EDIT: nie wiem czy to ma znaczenie używam Debiana Wheezy 7.

EDIT2: Małą ilość plików typu directory rozpoznaje  ale naprawdę małą.

EDIT3: Włączam to oczywiście jako root.

EDIT4: Wniosek jest taki że trzeba więcej warunków na to czy coś jets plikiem typu directory

EDIT5:!!!!!!

http://ideone.com/rxIuPl

program działa ale wywala mi czasem naruszenie pamięci - jakby próbował wejść w regular file

EDIT6: poprawiłem swój program tak aby uniknąć segfal czyli wejścia w plik typu directory  który nie istnieje bądź go nie ma.
Podstawowe problemy to:
-foldery procesu PID które są kasowane gdy proces przestaje działać
-folder Trash gdzie znajdują się uszkodzone pliki które mogą zostać rozpoznane jako folder (uszkodzony hard link).

Pozostał mi ostatni problem gdy wyszukuję na całym dysku czegoś dostaje segmentation fault (Naruszenie pamięci) na pewnym folderze. Ale gdy przeszukuję folder w którym znajduje się tamten folder to wszystko działa. Co może to powodować??

Plik directory został skopiowany z windowsa

Program:

http://ideone.com/0czTwk

EDIT 7 (~ostatni)

Rozwiązałem problem - zapomniałem o closedir(); :)))))

działający program :) :

[jego wada to to że nie sprawdza czy lower case nie ma ale chrzanić:)))]

http://ideone.com/6GyOcq

EDIT 8
Wersja kolejna lekko poprawiona (pojawily sie uwagi). Nie ostatnia bo nadal sypie sie na pewnych plikach i wpada w "deadlocki" ale do sprawdzania home/user/dokumenty. Jak znalazł ;)

http://ideone.com/IzugPZ