Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2003.10.16;
Скачать: [xml.tar.bz2];

Вниз

Аналог GetTickCount во FreePascal   Найти похожие ветки 

 
pasha_golub   (2003-09-26 16:54) [0]

Сабж или как узнать время работы процесса используя средства FreePascal в ОС Линух.
ЗЫ Задал сюда, потому как они там на форум раз в год наверное заходят


 
clickmaker   (2003-09-26 18:32) [1]

Ну а сюда наверное раз в 2 года :)


 
pasha_golub   (2003-09-26 18:37) [2]

Не, просто Тяпница :-)


 
BOA_KAA   (2003-09-26 18:49) [3]

На Цы так мона

fd = open("/proc/uptime", O_RDONLY);
read(fd,...);
...


 
pasha_golub   (2003-09-27 11:30) [4]

2BOA_KAA
Напиши дальше плз, а я переведу


 
Anatoly Podgoretsky   (2003-09-27 11:32) [5]

Значит у тебя нет Линукса?


 
pasha_golub   (2003-09-27 11:33) [6]

2Anatoly Podgoretsky
Есть, у меня нет хороших знаний С :-(


 
PVOzerski   (2003-09-27 11:55) [7]

В FPC есть unit DOS, а в нем Procedure GetTime(var hour, minute, second, sec100: word); Не подойдет?


 
Anatoly Podgoretsky   (2003-09-27 11:58) [8]

pasha_golub © (27.09.03 11:33) [6]
Отлично, тогда взгляни текстовым редактором указанный файл, при этом несколько раз, время указано в секундах, значит можешь расчитывать на 10 миллисекунд точность.

PVOzerski © (27.09.03 11:55) [7]
По всей видимости нет, ему под Линукс.


 
pasha_golub   (2003-09-27 12:04) [9]

2PVOzerski

На данный момент я использую GetTime (есть аналог под Линух), но система то мультизадачная, то есть в найденный мною период времени на пике загрузки может отработать еще несколько десятков процессов

2Anatoly Podgoretsky
Я это понял, спасибо. Но это то же самое что и GetTime. А мне нужно узнать сколько процессорного времени выделено именно для этого процесса


 
PVOzerski   (2003-09-27 12:05) [10]

2Anatoly Podgoretsky © (27.09.03 11:58) [8]
Я это понял. Но (ради TP compatibility) этот модуль есть и для *никсовых платформ. Специально проверил - в implementation этого модуля значится
Uses
Strings,Unix;
а реализация, кстати, такая:
Procedure GetTime(Var Hour, Minute, Second, Sec100: Word);
Begin
Unix.GetTime(Hour,Minute,Second,Sec100);
end;

:^)
Правда, у более старых версий FPC модуль Unix может называться Linux.


 
pasha_golub   (2003-09-27 12:12) [11]

2PVOzerski
Я конечно не знаю, но у меня версия 1.0.10, я ее только два дня назад выкачал. В документах модуля Unix не нашел


 
Anatoly Podgoretsky   (2003-09-27 12:12) [12]

Ты просил все таки GetTickCount, а этот файл по сути то


 
pasha_golub   (2003-09-27 12:16) [13]

2Anatoly Podgoretsky
Да согласен, неудачная формулировка, но все таки...


 
PVOzerski   (2003-09-27 12:17) [14]

2pasha_golub © (27.09.03 12:12) [11]
А у меня нестабильная ("разрабатываемая") 1.1, там разделили "общеюниксные" и "линуксные" функции по разным модулям. Потому о модуле Linux и предупреждал. 1.0.10 - это последний релиз, но не последняя существующая сейчас версия, просто ссылки на 1.1 - в другом разделе сайта FreePascal.


 
pasha_golub   (2003-09-27 12:24) [15]

2PVOzerski
Я так и подумал. Так ты у нас экстремал, на нестабильных версиях работаешь :-)


 
PVOzerski   (2003-09-27 12:33) [16]

>Я так и подумал. Так ты у нас экстремал, на нестабильных версиях работаешь :-)
Я был когда-то еще бОльшим экстремалом - компилятор и RTL патчил. Сейчас времени только на багрепорты осталось :^(


 
pasha_golub   (2003-09-27 12:40) [17]

2PVOzerski
Уважаю. Так как мне подсчитать кол-во тиков проца на определенный процесс?


 
pasha_golub   (2003-09-27 12:46) [18]

Кстати, только что получил интересные результаты. Два раза подряд запустил процесс с большим циклом. Так в первом случае, измеряя все тем же GetTime, получил 0.3 секунды, а во втором 0.1 секунды. Сами посудите такой разброс значений не есть хорошо!

Так что вопрос по прежнему актуален.


 
PVOzerski   (2003-09-27 12:55) [19]

Так ведь Linux - не QNX, быть ОС реального времени (по крайней мере, обычные версии) не претендует. А я немного порылся. Вот описание функции gettimeofday - http://bsd.opennet.ru/man.shtml?topic=gettimeofday&category=2&russian=0
Правда, это тоже не совсем то, возможно.


 
pasha_golub   (2003-09-27 12:58) [20]

2PVOzerski
Спасибо, посмотрел. В принципе те же яйца - вид сбоку. Вопрос еще как человеку близкому к проекту. Не могу найти функции chroot, chdir, хотя здравый смысл подсказывает, что без низ никак. Где их можно нарыть? Спасибо.


 
PVOzerski   (2003-09-27 13:03) [21]

Вот, еще нарыл: :^)

/* ---- uptime of the machine ---- */
void uptime(void)
{
FILE *cpuinfofile, *versionfile, *uptimefile;
int uptime;
char line[MAXBUF];
uptimefile = fopen("/proc/uptime","r");

fgets(line,MAXBUF,uptimefile);
fclose(uptimefile);
if (sscanf(line,"%d.",&uptime))
{
int left,days,hours,minutes,secs;

days = uptime / DAYSEC;
left = uptime - (days * DAYSEC);

hours = left / HOURSEC;
left = left - (hours * HOURSEC);
minutes = left / MINSEC;
secs = left - minutes * MINSEC;

printf("Uptime: %2d:%2d:%2d:%2d\n",days,hours,minutes,secs);
}
}


 
PVOzerski   (2003-09-27 13:09) [22]

Касательно моей близости к проекту: относительно Linux она сводится к тому, что у меня сейчас скачаны относительно свежие исходники, в том числе RTL, в которых могу копаться - чем сейчас и занимаюсь. RTL-то я патчил только виндовую.


 
PVOzerski   (2003-09-27 13:18) [23]

>проекту. Не могу найти функции chroot, chdir, хотя здравый смысл подсказывает, что без низ
chdir - стандартная ф-ция RTL. Вот ее реализация для Linux:

Function Sys_Chdir(Filename:pchar):longint;
var
regs : SysCallregs;

begin
regs.reg2:=longint(filename);
Sys_ChDir:=SysCall(SysCall_nr_chdir,regs);
end;

Procedure ChDir(Const s: String);[IOCheck];
Var
Buffer: Array[0..255] of Char;
Begin
If (s="") or (InOutRes <> 0) then
exit;
Move(s[1], Buffer, Length(s));
Buffer[Length(s)] := #0;
sys_chdir(@buffer);
Errno2Inoutres;
{ file not exists is path not found under tp7 }
if InOutRes=2 then
InOutRes:=3;
End;

при этом syscall_nr_chdir = 12;


 
pasha_golub   (2003-09-27 14:06) [24]

Ага, понятно, спасибо. А с chroot там чего? Если я сильно наглею, можно мне сбросить свежачок, а я сам покапаюсь :-)


 
PVOzerski   (2003-09-27 14:24) [25]

У меня "свежачок" конца августа. Если мегабайты не пугают, качай лучше с сайта. Если primary перегружен, например, с норвежского зеркала
ftp://ftp.no.freepascal.org/pub/fpc/snapshot/v11/source/fpc.zip



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2003.10.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.012 c
14-51474
Карелин Артем
2003-09-29 13:44
2003.10.16
Ограничения на СОМ-порт.


1-51244
uu
2003-10-03 15:27
2003.10.16
string


3-51084
Deniz
2003-09-25 13:30
2003.10.16
След. запись?


1-51267
kaif
2003-09-30 00:25
2003.10.16
SelectDirectory + CreateDirButton


1-51227
Nikolai_S
2003-10-06 12:59
2003.10.16
COM и MS Word XP





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский