Arama butonu
Bu konudaki kullanıcılar: 1 misafir
5
Cevap
593
Tıklama
0
Öne Çıkarma
Ubuntu- C ile proses bilgilerini yazdırmak ?
E
3 yıl
Çavuş
Konu Sahibi

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



@
3 yıl
Teğmen

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


Bu mesaja 1 cevap geldi.
E
3 yıl
Çavuş
Konu Sahibi

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



S
3 yıl
Yüzbaşı

/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]


Bu mesaja 1 cevap geldi.
E
3 yıl
Çavuş
Konu Sahibi

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 ?


Bu mesaja 1 cevap geldi.
S
3 yıl
Yüzbaşı

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.




Bu mesajda bahsedilenler: @Excalıburr
DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.