Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 3. a) Poleceniem truss z programu wypisującego tekst na wyjście standardowe można odczytać dokładną lokalizację uruchamianego pliku, bądź przy użyciu flagi -t wyznaczyć wszystkie operacje, np otwierania plików, wypisywania tekstu (open, close, read, write). Śledzić można także sygnały w programie flagą -s numer_sygnału lub -s nazwa_sygnału. Poprzedzenie wykrzyknikiem numeru/nazwy wyklucza sygnał ze śledzenia.
- b) Pliki, które powłoka bash próbuje odczytać przy starcie (wyśledzone przy użyciu polecenia: truss -t open bash)
- open("/var/ld/ld.config", O_RDONLY) = 3
- open("/lib/libc.so.1", O_RDONLY) = 3
- open64("/dev/tty", O_RDWR|O_NONBLOCK) = 3
- open("/platform/SUNW,Sun-Fire-880/lib/libc_psr.so.1", O_RDONLY) = 3
- open("/usr/lib/locale/pl_PL.UTF-8/pl_PL.UTF-8.so.3", O_RDONLY) = 3
- open("/usr/lib/locale/common/methods_unicode.so.3", O_RDONLY) = 3
- open("/opt/csw/lib/sparcv9/libintl.so.8", O_RDONLY) = 3
- open("/opt/csw/lib/sparcv8/libintl.so.8", O_RDONLY) = 3
- open("/opt/csw/lib/sparcv9/libiconv.so.2", O_RDONLY) = 3
- open("/opt/csw/lib/sparcv8/libiconv.so.2", O_RDONLY) = 3
- open("/lib/libnsl.so.1", O_RDONLY) = 3
- open64("/var/run/name_service_door", O_RDONLY) = 3
- open("/etc/nsswitch.conf", O_RDONLY|O_LARGEFILE) = 3
- open("/lib/nss_files.so.1", O_RDONLY) = 3
- open("/lib/libsocket.so.1", O_RDONLY) = 3
- open("/etc/passwd", O_RDONLY|O_LARGEFILE) = 3
- open("/usr/lib/nss_ldap.so.1", O_RDONLY) = 3
- open("/usr/lib/libsldap.so.1", O_RDONLY) = 3
- open("/usr/lib/libldap.so.5", O_RDONLY) = 3
- open("/lib/libscf.so.1", O_RDONLY) = 3
- open("/lib/libdoor.so.1", O_RDONLY) = 3
- open("/lib/libuutil.so.1", O_RDONLY) = 3
- open("/lib/libgen.so.1", O_RDONLY) = 3
- open("/usr/lib/mps/libnspr4.so", O_RDONLY) = 3
- open("/lib/libpthread.so.1", O_RDONLY) = 3
- open("/lib/librt.so.1", O_RDONLY) = 3
- open("/lib/libdl.so.1", O_RDONLY) = 3
- open("/lib/libaio.so.1", O_RDONLY) = 3
- open("/lib/libmd.so.1", O_RDONLY) = 3
- open("/usr/lib/locale/pl_PL.UTF-8/LC_MESSAGES/SUNW_OST_SGS.mo", O_RDONLY) Err#2 ENOENT
- open("/usr/lib/locale/pl_PL.UTF-8/LC_MESSAGES/SUNW_OST_OSLIB.mo", O_RDONLY) Err#2 ENOENT
- open("/usr/lib/mps/cpu/sparcv8plus/libnspr_flt4.so", O_RDONLY) = 3
- open("/lib/libcurses.so.1", O_RDONLY) = 3
- open("/lib/libmp.so.2", O_RDONLY) = 3
- open("/proc/8118/psinfo", O_RDONLY) = 3
- open("/var/run/ldap_cache_door", O_RDONLY) = 3
- open("/usr/lib/locale/pl_PL.UTF-8/LC_MESSAGES/messages.mo", O_RDONLY) Err#2 ENOENT
- open64("/etc/bash.bashrc", O_RDONLY) Err#2 ENOENT
- open64("/home/wduda/.bashrc", O_RDONLY) Err#2 ENOENT
- open64("/home/wduda/.bash_history", O_RDONLY) = 3
- open64("/home/wduda/.bash_history", O_RDONLY) = 3
- open("/usr/share/lib/terminfo//x/xterm-256color", O_RDONLY) Err#2 ENOENT
- c) Ilość wystąpień funkcji printf wywoływanych przez program ls zliczam przy użyciu polecenia: truss -t write ls . ls wywołuje jedną funkcję printf na jedną linię plików.
- d) Przy użyciu polecenia truss -t open,close pico plik_tekstowy można wywnioskować, że plik otwierany jest dopiero pod koniec trwania procesu i zamykany bezzwłocznie po wykonaniu na nim operacji read.
- 4. W Linuxie przy użyciu programu strace można otrzymać porównywalne wyniki, np dla podpunktu 3d) analogiczne polecenie to : strace -e trace=open,close pico plik_tekstowy. Dla podpunktu 3c) odpowiednik polecenia w programie strace to : strace -e trace=write ls. Ponownie wynikiem jest jedno wywołanie funkcji printf na linię plików.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement