Şimdi Ara

Ubuntu- C ile proses bilgilerini yazdırmak ?

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
6
Cevap
0
Favori
586
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri
  • Son Yorum 3 yıl
  • Cevaplayan Üyeler 3
  • Konu Sahibinin Yazdıkları 3
  • Ortalama Mesaj Aralığı 14 saat 42 dakika
  • Haberdar Edildiklerim (Alıntılar) 1
  • Konuya En Çok Yazanlar
  • Excalıburr (3 mesaj) silliusblack (2 mesaj) @rockybalboa (1 mesaj)
  • Konuya Yazanların Platform Dağılımı
  • Masaüstü (6 mesaj)
  • @
0 oy
Öne Çıkar
Giriş
Mesaj
  • Merhabalar. Malum sebepten vizeler iptal olunca hocalar ödevleri yığdı üstümüze. Ödev kısa ancak anlaması zor :


    1) Bir prosesin data, yığıt (heap) ve yığın (stack) gibi bölümleri için aşağıda istenilen bilgileri bulup ekrana yazdıran
    programı C dilinde yazınız.
    - Her bir bölümün başlangıç adresi (0x ile başlayan hexodesimal formatta),
    - Her bir bölümün boyutu (byte cinsinden).
    Yol gösterme: Program istenmeyen bir şekilde sonlanmaması için signal’lardan istifade edebilirsiniz.
    Örnek çıktı:
    > ./soru1
    Data bölümü : başlangıç= 0x123456fe, boyut= 8156345 Byte
    Yığıt bölümü: başlangıç= 0x62345623, boyut= 2156123 Byte
    Yığın bölümü: başlangıç= 0xb23456cde, boyut= 4156567 Byte
    Not: Yukarıdaki rakamlar farazidir.


    Şu ana kadar yaptığım:
      FILE *f = fopen("/proc/self/statm","r"); 
    kodu ile şu an çalışan prosesten data bölümünü çekmek istedim. Ama doğru yolda mıyım ve data bilgisini nasıl çekeceğim hiçbir fikrim yok







  • saü lü mühendisler her yerde .Bulursan bana da at kanka
  • quote:

    Orijinalden alıntı: @rockybalboa

    saü lü mühendisler her yerde .Bulursan bana da at kanka
    Sorma hocam ne kaynak var ne bişey. Zaten dokümanı da düzgün hazırlamamışlar. Hocaya atılan maillere verdiği cevaptan öğrendik dokümanda kastedileni
  • /proc/pid/maps dosyasında bellek adresleri yer alır. İlk iş olarak bunu okuyarak başlayabilirsin. Aşağıda sistemde çalışan örnek bir processin bellek haritası.


    55fb2a89e000-55fb2a8c6000 r-xp 00000000 08:02 11014795 /usr/lib/gvfs/gvfs-udisks2-volume-monitor ------------------text
    55fb2aac5000-55fb2aac9000 r--p 00027000 08:02 11014795 /usr/lib/gvfs/gvfs-udisks2-volume-monitor ------------------ sabitler
    55fb2aac9000-55fb2aaca000 rw-p 0002b000 08:02 11014795 /usr/lib/gvfs/gvfs-udisks2-volume-monitor ------------------- değişkenler
    55fb2b4ac000-55fb2b551000 rw-p 00000000 00:00 0 [heap] -------------------- heap
    7f3ec0000000-7f3ec0021000 rw-p 00000000 00:00 0
    7f3ec0021000-7f3ec4000000 ---p 00000000 00:00 0
    7f3eda339000-7f3eda33c000 r-xp 00000000 08:02 11010502 /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0.5600.4
    7f3eda33c000-7f3eda53b000 ---p 00003000 08:02 11010502 /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0.5600.4
    7f3eda53b000-7f3eda53c000 r--p 00002000 08:02 11010502 /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0.5600.4
    7f3eda53c000-7f3eda53d000 rw-p 00003000 08:02 11010502 /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0.5600.4
    7f3eda53d000-7f3eda724000 r-xp 00000000 08:02 12456741 /lib/x86_64-linux-gnu/libc-2.27.so
    7f3eda724000-7f3eda924000 ---p 001e7000 08:02 12456741 /lib/x86_64-linux-gnu/libc-2.27.so
    7f3eda924000-7f3eda928000 r--p 001e7000 08:02 12456741 /lib/x86_64-linux-gnu/libc-2.27.so
    7f3eda928000-7f3eda92a000 rw-p 001eb000 08:02 12456741 /lib/x86_64-linux-gnu/libc-2.27.so
    7f3eda92a000-7f3eda92e000 rw-p 00000000 00:00 0
    7f3eda92e000-7f3eda948000 r-xp 00000000 08:02 12456874 /lib/x86_64-linux-gnu/libpthread-2.27.so
    7f3eda948000-7f3edab47000 ---p 0001a000 08:02 12456874 /lib/x86_64-linux-gnu/libpthread-2.27.so
    7f3edab47000-7f3edab48000 r--p 00019000 08:02 12456874 /lib/x86_64-linux-gnu/libpthread-2.27.so
    7f3edab48000-7f3edab49000 rw-p 0001a000 08:02 12456874 /lib/x86_64-linux-gnu/libpthread-2.27.so
    7f3edab49000-7f3edab4d000 rw-p 00000000 00:00 0
    7f3edbda6000-7f3edbda8000 rw-p 00000000 00:00 0
    7f3edbda8000-7f3edbdcf000 r-xp 00000000 08:02 12456713 /lib/x86_64-linux-gnu/ld-2.27.so
    7f3edbf9e000-7f3edbfad000 rw-p 00000000 00:00 0
    7f3edbfcf000-7f3edbfd0000 r--p 00027000 08:02 12456713 /lib/x86_64-linux-gnu/ld-2.27.so
    7f3edbfd0000-7f3edbfd1000 rw-p 00028000 08:02 12456713 /lib/x86_64-linux-gnu/ld-2.27.so
    7f3edbfd1000-7f3edbfd2000 rw-p 00000000 00:00 0
    7ffe33836000-7ffe33857000 rw-p 00000000 00:00 0 [stack] --------------------------------- stack
    7ffe338f7000-7ffe338fa000 r--p 00000000 00:00 0 [vvar]
    7ffe338fa000-7ffe338fc000 r-xp 00000000 00:00 0 [vdso]
    ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]




  • quote:

    Orijinalden alıntı: silliusblack

    /proc/pid/maps dosyasında bellek adresleri yer alır. İlk iş olarak bunu okuyarak başlayabilirsin. Aşağıda sistemde çalışan örnek bir processin bellek haritası.


    55fb2a89e000-55fb2a8c6000 r-xp 00000000 08:02 11014795 /usr/lib/gvfs/gvfs-udisks2-volume-monitor ------------------text
    55fb2aac5000-55fb2aac9000 r--p 00027000 08:02 11014795 /usr/lib/gvfs/gvfs-udisks2-volume-monitor ------------------ sabitler
    55fb2aac9000-55fb2aaca000 rw-p 0002b000 08:02 11014795 /usr/lib/gvfs/gvfs-udisks2-volume-monitor ------------------- değişkenler
    55fb2b4ac000-55fb2b551000 rw-p 00000000 00:00 0 [heap] -------------------- heap
    7f3ec0000000-7f3ec0021000 rw-p 00000000 00:00 0
    7f3ec0021000-7f3ec4000000 ---p 00000000 00:00 0
    7f3eda339000-7f3eda33c000 r-xp 00000000 08:02 11010502 /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0.5600.4
    7f3eda33c000-7f3eda53b000 ---p 00003000 08:02 11010502 /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0.5600.4
    7f3eda53b000-7f3eda53c000 r--p 00002000 08:02 11010502 /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0.5600.4
    7f3eda53c000-7f3eda53d000 rw-p 00003000 08:02 11010502 /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0.5600.4
    7f3eda53d000-7f3eda724000 r-xp 00000000 08:02 12456741 /lib/x86_64-linux-gnu/libc-2.27.so
    7f3eda724000-7f3eda924000 ---p 001e7000 08:02 12456741 /lib/x86_64-linux-gnu/libc-2.27.so
    7f3eda924000-7f3eda928000 r--p 001e7000 08:02 12456741 /lib/x86_64-linux-gnu/libc-2.27.so
    7f3eda928000-7f3eda92a000 rw-p 001eb000 08:02 12456741 /lib/x86_64-linux-gnu/libc-2.27.so
    7f3eda92a000-7f3eda92e000 rw-p 00000000 00:00 0
    7f3eda92e000-7f3eda948000 r-xp 00000000 08:02 12456874 /lib/x86_64-linux-gnu/libpthread-2.27.so
    7f3eda948000-7f3edab47000 ---p 0001a000 08:02 12456874 /lib/x86_64-linux-gnu/libpthread-2.27.so
    7f3edab47000-7f3edab48000 r--p 00019000 08:02 12456874 /lib/x86_64-linux-gnu/libpthread-2.27.so
    7f3edab48000-7f3edab49000 rw-p 0001a000 08:02 12456874 /lib/x86_64-linux-gnu/libpthread-2.27.so
    7f3edab49000-7f3edab4d000 rw-p 00000000 00:00 0
    7f3edbda6000-7f3edbda8000 rw-p 00000000 00:00 0
    7f3edbda8000-7f3edbdcf000 r-xp 00000000 08:02 12456713 /lib/x86_64-linux-gnu/ld-2.27.so
    7f3edbf9e000-7f3edbfad000 rw-p 00000000 00:00 0
    7f3edbfcf000-7f3edbfd0000 r--p 00027000 08:02 12456713 /lib/x86_64-linux-gnu/ld-2.27.so
    7f3edbfd0000-7f3edbfd1000 rw-p 00028000 08:02 12456713 /lib/x86_64-linux-gnu/ld-2.27.so
    7f3edbfd1000-7f3edbfd2000 rw-p 00000000 00:00 0
    7ffe33836000-7ffe33857000 rw-p 00000000 00:00 0 [stack] --------------------------------- stack
    7ffe338f7000-7ffe338fa000 r--p 00000000 00:00 0 [vvar]
    7ffe338fa000-7ffe338fc000 r-xp 00000000 00:00 0 [vdso]
    ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]
    Teşekkürler. Bu kısmı hallettim zaten heap ve stack kısmını aldım. Son olarak data kaldı. Data sanırım 2.satırdaki r--p yazan oluyor. Peki birden fazla r--p yazan satır varsa o zaman hepsinin boyutunun toplamı mı alınmalı data için ?




  • Excalıburr E kullanıcısına yanıt
    Data kısmı 2 ve 3 satırlardır. 2. satır başlangıçta değer ataması yapılan değişkenler, 3. satır ise atama yapılmayan değişkenlerin bellek bölümlerini gösterir.
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.