? Napada me neco jako system ("/bin/ls"), a odchytit output. Ale urcite bude elgantnejsi verze vyuzivajici nake knihovni funkce..
? Napada me neco jako system ("/bin/ls"), a odchytit output. Ale urcite bude elgantnejsi verze vyuzivajici nake knihovni funkce..
Parasite lost, AKA the Girlfriend Mission:The Socka Project sleeps, lets use (her :) Durex! 1GHz in some soltek stuff, Ati rage 128, etc.. (it\'s noisy)
IMB Thinkpad R31: celer 1.2GHz, 384M RAM, 60GB 5400rpm hitachi, i810 8MB onboard (na praci to staci ;)
[pro archivni ucely] janina overclockerska poradna (.tar.gz, 1.1MB, otevrete si index.html v browseru podporujicim javascript a frames)
Kód:/* * Meno: Ondrej Zary * Kruzok: info7 * Datum: 10.5.2003 * Zadanie: zadanie04c * Kompilacia: cc pripravne_04c.c -o pripravne_04c * * Text zadania: * Napiste program, ktory v zadanom adresari, uvedenom ako argument, a jeho * podadresaroch, najde vsetky symbolicke linky. * Ak bude program spusteny s prepinacom -e, vyhlada len linky s existujucim * cielovym suborom; s prepinacom -n len linky s neexistujucim cielovym suborom. * Program NESMIE pouzivat na prehladavanie adresara externy program (musi * prehladavat adresar rekurzivne). * * Syntax: * zadanie2 [-h] [-e] [-n] adresar * * Format vystupu (na standardny vystup): * Output: 'najdena linka' * * Bonusove body mozete ziskat ak vas program bude vediet prehladavat lubovolny * pocet zadanych adresarov (ak nebude adresar uvedeny, prehladava sa aktualny * pracovny adresar). * * Rieste aj cast zadania oznacenu ako bonusovu. * * Program musi osetrovat pocet a spravnost argumentov. Program musi mat help, * ktory sa vypise pri zadani argumentu -h a ma tvar: * Meno programu (C) meno autora * * Usage: <meno_programu> <arg1> <arg2> ... * <arg1>: xxxxxx * <arg2>: yyyyy * * Korektny vystup programu musi ist na standardny vystup (stdout). * Chybovy vystup programu musi ist na chybovy vystup (stderr). * Chybovy vystup musi mat tvar: * Error: 'adresar, subor, program,... pri ktorom nastala chyba': popis chyby ... * Ak program pouziva nejake pomocne vypisy, musia ist na chybovy vystup a * musia mat tvar: * Debug: vypis ... * * Program sa musi dat skompilovat !!! * Prikaz pre kompilaciu je uvedeny vyssie, v pripade potreby ho modifikujte !!! * * Poznamky: (sem vlozte pripadne poznamky k vypracovanemu zadaniu) * * Riesenie: */ #include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <dirent.h> #include <limits.h> #include <string.h> #include <fcntl.h> void Help() { printf("zadanie04 (c) Rainbow\n"); printf("usage: zadanie04 [-h] [-e] [-n] [adresar] [...]\n"); printf(" -h: tento help\n"); printf(" -e: hlada len linky s existujucim cielovym suborom\n"); printf(" -n: hlada len linky s neexistujucim cielovym suborom\n"); printf(" adresar: adresar(e), kde sa budu linky hladat\n"); } void SearchDir(char *dirname, int type) { DIR *dp; struct dirent *dir; struct stat filestat; char path[PATH_MAX]; char buf[PATH_MAX]; int i,desc; if ((dp=opendir(dirname)) == NULL) { fprintf(stderr,"Error: chyba pri citani adresara %s\n",dirname); return; } while ((dir=readdir(dp)) != NULL) { if ((!strcmp(dir->d_name,".")) || (!strcmp(dir->d_name,".."))) continue; strcpy(path,dirname); if (dirname[strlen(dirname)-1] != '/') strcat(path,"/"); strcat(path,dir->d_name); if (lstat(path,&filestat) == -1) { fprintf(stderr,"Error: chyba pri lstat\n"); continue; } if (S_ISDIR(filestat.st_mode)) SearchDir(path,type); if (S_ISLNK(filestat.st_mode)) { if (type == 0) { printf("Output: '%s'\n",path); continue; } if ((i=readlink(path,buf,sizeof(buf))) == -1) { fprintf(stderr,"Error: chyba pri readlink %s\n",path); continue; } buf[i]=0; if ((desc=open(buf,O_RDONLY)) == -1) { if (type == 2) printf("Output: '%s'\n",path); } else { if (type == 1) printf("Output: '%s'\n",path); close(desc); } } } closedir(dp); } int main(int argc, char *argv[]) { int o,type=0; opterr = 0; while ((o = getopt(argc, argv, "hen")) != -1) switch (o) { case 'h': Help(); exit(0); case 'e': type=1; break; case 'n': type=2; break; case '?': default: fprintf(stderr, "Error: '%c': nespravny prepinac\n", optopt); exit(1); } argc -= optind; argv += optind; if (argc == 0) SearchDir(".",type); else for (o=0;o<argc;o++) SearchDir(argv[o],type); }
1: Asus P2B 1.10 • Celeron 1100@1364/1.8V • 512MB SDRAM • Samsung SP1213N+WD AC28400 • Toshiba XM-6402B+SD-M1212 • PowerColor AR2L Radeon 9100 64MB • 3C900-Combo • Bt848A • ASB-3940UA • AWE-64 • DTK PTP-3007 • VisionMaster 405 • Umax UC630 • Star LC24-200 Colour 2: PCPartner TXB820DS • Cyrix MII PR300/1.8V • 256MB SDRAM • 2xSamsung HD400LD+IT8212F • Accesstek CW4001 • LS-120 • Mystique 4MB • Millennium II 4MB • 3C509 • CMI8329A+Dream MIDI • ADI ProVista E44 • SyncMaster 203B Notebook: DTK FortisPro TOP-5A • P166MMX/1.8V • 80MB EDO • Hitachi 5K80 40GB • 12,1" TFT Router: A-Trend ATC-1425B • i486DX 50@33/5V • 48MB FPM • WD AC14300 • UMC UM9003F • HP PC LAN 16/TP+ Car: Mazda 323P BA • Z5 1489ccm, 65kW@5500rpm, 134Nm@4000rpm
Dik moc, to sem potreboval..
Parasite lost, AKA the Girlfriend Mission:The Socka Project sleeps, lets use (her :) Durex! 1GHz in some soltek stuff, Ati rage 128, etc.. (it\'s noisy)
IMB Thinkpad R31: celer 1.2GHz, 384M RAM, 60GB 5400rpm hitachi, i810 8MB onboard (na praci to staci ;)
[pro archivni ucely] janina overclockerska poradna (.tar.gz, 1.1MB, otevrete si index.html v browseru podporujicim javascript a frames)
Toto téma si právě prohlíží 1 uživatelů. (0 registrovaných a 1 anonymních)