Определите информацию о процессе программно в Darwin/OSX

используйте формулу INDEX() для обрезки ненужного, например:

=INDEX(IMPORTXML("URL", "//div[@class = 'TimeStamp']") , , 1)

или, может быть:

=ARRAYFORMULA(INDEX(SPLIT(IMPORTXML("URL", "//div[@class = 'TimeStamp']"), " ") , , 1))
=ARRAYFORMULA(TEXT(TO_DATE(INDEX(SPLIT(IMPORTXML(
 "https://"&C13&".op.gg/summoner/userName="&B13; 
 "//div[@class = 'TimeStamp']"); " "); ; 1));
 "yyyy-mm-dd"))

[114 ] 0

15
задан anemitz 20 October 2008 в 23:38
поделиться

4 ответа

Информация о процессе прибывает от pidinfo:

cristi:~ diciu$ grep proc_pidinfo /usr/include/libproc.h

int proc_pidinfo(int pid, int flavor, uint64_t arg,  void *buffer, int buffersize);

загрузка ЦП прибывает от host_statistics:

cristi:~ diciu$ grep -r host_statistics /usr/include/

/usr/include/mach/host_info.h:/* host_statistics() */

/usr/include/mach/mach_host.defs:routine host_statistics(

/usr/include/mach/mach_host.h:/* Routine host_statistics */

/usr/include/mach/mach_host.h:kern_return_t host_statistics

для получения дополнительной информации, проверьте источники для top и lsof, они - открытый исходный код (необходимо зарегистрироваться как разработчик Apple, но это бесплатно):

https://opensource.apple.com/source/top/top-111.20.1/libtop.c.auto.html

Более позднее редактирование: Все эти интерфейсы являются конкретной версией, таким образом, необходимо принять это во внимание при написании производственного кода (libproc.h):

/*
 * This header file contains private interfaces to obtain process information.
 * These interfaces are subject to change in future releases.
 */
14
ответ дан 1 December 2019 в 02:56
поделиться

Так как Вы говорите, что никакой Objective C мы исключим большинство платформ MacOS.

можно получить процессорное время с помощью getrusage (), который дает общую сумму Пользовательского и Системного процессорного времени, заряженного к процессу. Для получения процента использования ЦП, необходимо было бы создать снимки значения getrusage однажды в секунду (или однако детализированный, Вы хотите быть).

#include <sys/resource.h>

struct rusage r_usage;

if (getrusage(RUSAGE_SELF, &r_usage)) {
    /* ... error handling ... */
}

printf("Total User CPU = %ld.%ld\n",
        r_usage.ru_utime.tv_sec,
        r_usage.ru_utime.tv_usec);
printf("Total System CPU = %ld.%ld\n",
        r_usage.ru_stime.tv_sec,
        r_usage.ru_stime.tv_usec);

в getrusage структуре существует поле RSS, но, кажется, всегда нуль в MacOS X 10.5. Michael Knight записал сообщение в блоге несколько лет назад о том, как определить RSS.

7
ответ дан 1 December 2019 в 02:56
поделиться

Я думаю, что большинство этих значений доступно в API Маха, но это было некоторое время, так как я ввел по абсолютному адресу вокруг там. С другой стороны, Вы могли просто посмотреть на исходный код для "PS" или "главных" команд, и видеть, как они делают это.

2
ответ дан 1 December 2019 в 02:56
поделиться

Большая часть этой информации может быть получена от GetProcessInformation () .

Между прочим, почему виртуальные методы для функций, которые возвращают processwide информацию?

Это УГЛЕРОД только и не будет работать с какао

0
ответ дан 1 December 2019 в 02:56
поделиться