Linux за българи: Форуми

Програмиране => Общ форум => Темата е започната от: popov222 в Dec 27, 2013, 10:31



Титла: Как да пренапиша този код от С в Java
Публикувано от: popov222 в Dec 27, 2013, 10:31
Здравейте,
    Искам да напиша Java програма която да взема от /proc всички демони и данните на демоните. И стигнах до един проблем: Трябва да взема от кода на top кода за изчисление на CPU и RAM а тоза се прави по формула. Можете ли да ми помогнете да намеря тази формула?

Прикачил съм кода на top.

Поздрави

 


Титла: Re: Как да пренапиша този код от С в Java
Публикувано от: BRADATA в Dec 27, 2013, 16:28
http://www.linuxhowtos.org/System/procstat.htm


Титла: Re: Как да пренапиша този код от С в Java
Публикувано от: gat3way в Dec 27, 2013, 19:15
Подозирам че искаш да си правиш "красив" top за Андроид?


Титла: Re: Как да пренапиша този код от С в Java
Публикувано от: bvbfan в Dec 27, 2013, 20:06
Може да пренасочиш stdout към буфер и да ползваш целият код написан на С и още по-добре може да си го компилираш в динамична библиотека и Java-та само да викаш една функция.  ;D Повече не мога да издавам научете малко С.


Титла: Re: Как да пренапиша този код от С в Java
Публикувано от: gat3way в Dec 27, 2013, 22:12
Това с JNI по принцип не е лоша идея, но те връзва към архитектурата и става голяма забава ако трябва да подържаш няколко различни такива...според мен има смисъл когато трябва да се достъпва нещо по хардуера на по-ниско ниво, което не е expose-нато за java-та...или ако трябва да правим cpu-интензивни сметки, които java-та няма да докара по-бързо от добре оптимизиран C код. В случаят с четенето от procfs не знам дали има смисъл от заниманието...формули, глупости, мисля че най-добре е някъде да се види документация на нещата в procfs и да се види кое на коя колона в /proc/pid/stat какво точно е, формулата оттам няма кой-знае колко мислене да се докара.

Ако все пак е за андроид, там от 4.3 нататък (и особено в киткат-а) нещо доста позатегнаха нещата с тези selinux простотии, та може и да не може да се изчетат procfs нещата от процес, вървящ с друг uid....ама знам ли, не съм си играл. При всички положения, четенето от procfs, разбиването на низове с някакъв разделител и превръщането от низ към int не е особено сложно, на java е още по-лесно. Всичко става с малко играчки и експерименти, аз не съм сигурен че ако търсиш акъл от друг човек ще е по-добре точно в този случай, в сравнение с това да си поиграеш.


Титла: Re: Как да пренапиша този код от С в Java
Публикувано от: popov222 в Dec 29, 2013, 00:18
Добре де, но в proc/XXX/stat файла имаме 1746 (hald-runner) S 1745 1745 1745 0 -1 4202496 1197 13856 9 10 0 1 4 5 20 0 1 0 3498 20815872 282 18446744073709551615 1 1 0 0 0 0 0 4096 65536 18446744073709551615 0 0 17 1 0 0 23 0 0. Как използвам тези данни, така че да мога да получа cpu load?


Титла: Re: Как да пренапиша този код от С в Java
Публикувано от: BRADATA в Dec 29, 2013, 09:40
В статията, дето пуснах линк пише кое какво е и как да си го извадиш.