Počet zdieľaných knižníc Napíšte skript, ktorý pre každý zadaný bežiaci proces vypíše, ktoré zdieľané knižnice má namapované vo svojom adresovom priestore. Za knižnice môžme považovať súbory ktorých názov sa začína "lib" a majú jednu z prípon ".so". Vypisovať sa bude len názov súboru bez cesty, v abecednom poradí. Pred každým výpisom bude riadok s textom "Process: " nasledovaný PID alebo názvom súboru, za výpisom prázdny riadok. Na konci bude hlásenie "All done.". Informácie je možné získať zo súboru "maps" v príslušnom podadresári "/proc/". Proces môže byť zadaný názvom príslušného podadresára v "/proc", čo väčšinou zodpovedá priamo jeho PID. Ak je pred identifikátorom procesu prepínač -f, tak namiesto názvu podadresára v "/proc" nasleduje cesta k súboru s mapovaniami. Ak je pred niektorým PID prepínač "-c", namiesto zoznamu knižníc sa vypíše hlásenie "Number of libs: " nasledované ich počtom. Prepínač -c môže byť aj pred -f. Ak hodnota zadaná ako PID nezodpovedá žiadnemu adresáru v /proc, vypíše na štandardný výstup chybové hlásenie "Error: Cannot read the map file!", skript môže pokračovať. Ak nebude zadaný žiadny proces, vypíše sa hlásenie "Error: arguments missing." a skript skončí. Podobne pri zlej kombinácii argumentov sa vypíše "Error: Bad arguments.". Vzor je nižšie. -------- $ sh libs.sh 1 1234567890 -c 1 self -c -f /proc/27653/maps Process: 1 libattr.so.1.1.0 libaudit.so.1.0.0 libblkid.so.1.1.0 libc-2.17.so libcap-ng.so.0.0.0 libcap.so.2.22 libdl-2.17.so libgcc_s-4.8.5-20150702.so.1 libkmod.so.2.2.10 liblzma.so.5.2.2 libmount.so.1.1.0 libpam.so.0.83.1 libpcre.so.1.2.0 libpthread-2.17.so librt-2.17.so libselinux.so.1 libuuid.so.1.3.0 libz.so.1.2.7 Process: 1234567890 Error: Cannot read the map file '/proc/1234567890/maps'! Process: 1 Number of libs: 18 Process: self libc-2.17.so libdl-2.17.so libm-2.17.so Process: /proc/27653/maps Number of libs: 208 All done. $ sh libs.sh Error: arguments missing. $ sh vzorak.sh -c -f Error: Bad arguments.