Programovacie C - adresare

Sekcia: Programovanie 14.11.2010 | 11:57
janko111   Návštevník
Zdravim,

vedeli by mi tu nejaki odbornici poradit,
ako naprogramovat skript v C, ktory vypise rekurzivnym sposobom obsah adresara?

Ide mi len o tu konrektnu funckiu.

Dakujem za vsetky Vase rady.
    • Re: Programovacie C - adresare 14.11.2010 | 12:11
      Avatar m4jkl   Používateľ
      man 3 opendir
      man 3 readdir
      man 3 closedir

      ;)
      • Re: Programovacie C - adresare 14.11.2010 | 12:16
        janko111   Návštevník
        Dakujem velmi pekne,

        a este sa ta chcem spytat, ze ako mam vypisat iba tie subory ktore su textove?
        To je ked das file ´find adreasar´ a co na konci ma slovo text.

        Vies poradit, ze ako funkciu "file" zakonponovat do C?

        Dakujem.
        • Re: Programovacie C - adresare 14.11.2010 | 12:25
          Avatar m4jkl   Používateľ
          skus pozriet na
          man 3 magic_file
          • Re: Programovacie C - adresare 14.11.2010 | 12:34
            janko111   Návštevník
            To nebude ono, ide o to, ze ja nejakym spodobom chcem spustit program file .

            Ako sa spustaju externe subory v C?

            Dakujem,
            • Re: Programovacie C - adresare 14.11.2010 | 12:41
              Avatar m4jkl   Používateľ
              no pravdepodobne to bude ono, lebo to iste robi aj prikaz file. ale ak chces spustit ten prikaz z tvojho programu, tak uplne najjednoduchsie je to pomocou "system("prikaz");"
              • Re: Programovacie C - adresare 14.11.2010 | 12:45
                janko111   Návštevník
                ten magic_file to nie je ono,
                moj manual take nieco ani nepozna.

                A ako funguje system("prikaz");?
                system ma vracat int, ale ja chcem vratit pole stringov nie?
                • Re: Programovacie C - adresare 14.11.2010 | 12:54
                  Avatar m4jkl   Používateľ
                  pravdepodobne ti chybaju nejake devel balicky, alebo iba manualove stranky.
                  http://linux.die.net/man/3/libmagic
                  "The magic_file() function returns a textual description of the contents of the filename argument, or NULL if an error occurred. If the filename is NULL, then stdin is used. "

                  system funguje takto:
                  majme system("ls -l");
                  vykonavanie tvojho programu sa pozastavi, spusti sa novy shell, v nom sa vykona "ls -l", uzivatel uvidi co ten prikaz vypisal a tvoj program sa znovu spusti.

                  • Re: Programovacie C - adresare 14.11.2010 | 12:59
                    janko111   Návštevník
                    A potom ten program pokracuje tam kde naposledy prestal?
                    a teda ked dam system("file ´find adresar´ | grep text$"); tak mi vypise vsetky textove subory,
                    ale ako tam este zakonponovat aj vlasne odpovede?

                    Ja to chcem tak ze:
                    Nasiel som textovy subor: adresa
                    Nasiel som textovy subor: adresa
                    ...


                    Dakujem za pomoc
                    • Re: Programovacie C - adresare 14.11.2010 | 13:17
                      Avatar m4jkl   Používateľ
                      take jednoduche to nebude. to uz rovno mozes vytvorit bash skript, ktory to urobi a nemusis si spinit ruky s c-ckom;) skutocne sa pozri na to magic_file(), je to to co hladas, ak to chces/musis robit v c-cku.
                • Re: Programovacie C - adresare 14.11.2010 | 12:59
                  miso   Návštevník
                  man 3 popen
                  • Re: Programovacie C - adresare 14.11.2010 | 13:14
                    janko111   Návštevník
                    Neukazali by ste mi niekto nejaky kratucky priklad pouzitia toho popen?
                    Prosim, neviem sa v tom orientovat.

                    Dakujem.
                    • Re: Programovacie C - adresare 14.11.2010 | 13:27
                      miso   Návštevník
                      http://www.opengroup.org/onlinepubs/009695399/functions/popen.html
                      • Re: Programovacie C - adresare 14.11.2010 | 15:36
                        janko111   Návštevník
                        Dik, ale ja tu mam napisane, ze na zistenie textoveho subora musim pouzit program file,
                        viete co to znamena?

                        Dakujem.
                        • Re: Programovacie C - adresare 14.11.2010 | 15:53
                          Avatar m4jkl   Používateľ
                          mozes sem dat presne zadanie?
                          • Re: Programovacie C - adresare 14.11.2010 | 20:26
                            janko111   Návštevník
                            Uloha znie ze vypisat zo zvoleneho adresara vsetky subory, ktory program file oznaci na konci ako text.
                            Podmienka je, ze musime pouzit program file.

                            Poradite?
                            • Re: Programovacie C - adresare 14.11.2010 | 20:50
                              Avatar m4jkl   Používateľ
                              v tom pripade je to najjednoduchsie cez ten vyssie spomenuty popen, alebo pomocou tiez tu spomenutej kombinacie fork+exec (+pipe).
                              • Re: Programovacie C - adresare 14.11.2010 | 22:52
                                janko111   Návštevník
                                presne ma zaujima to exec+fork+pipe.

                                Nebol by si taky dobry, a neukazal nejaku prakticku suvislost?
                                Bol by som ti strasne vdany! Velmi by si mi pomohol.
                                Ja uz som z toho tak trocha zufaly.

                                Prosiiim ;)

                        • Re: Programovacie C - adresare 14.11.2010 | 17:58
                          Avatar borg Arch, Debian jessie  Administrátor
                          pozri si systemove volania fork, exec
                          • Re: Programovacie C - adresare 14.11.2010 | 20:41
                            janko111   Návštevník
                            Vies mi ukazat nejaky kratucky priklad pouzitia tychto prikazov?
                            Bol by som ti moc krat vdacny.