2016-05-13 1 views
0

Я написал очень короткую программу для сбора некоторых файлов журналов, выплевываемых сторонним приложением. Он застегивает файлы и отправляет их мне.Получение базовой информации о машине под OS X

Я также хотел бы получить некоторую информацию о машине и особенно ее графических возможностях. В принципе, мне бы хотелось две страницы из «Системного отчета», «Оборудование и графика/Дисплеи». Гештальт ушел, поэтому я ищу другие решения.

Я нашел решение здесь, на SO, чтобы получить модель машины с помощью sysctlbyname, но, похоже, значения здесь весьма ограничены.

Итак, есть ли у кого-нибудь простой способ получить информацию о GPU?

+1

http://stackoverflow.com/a/18099669/1016102 –

+0

Ничего себе, я даже не знал, что вы можете это сделать до тех пор, пока мышь не зависнет. –

ответ

2

Вслед за ответ Марка выше, вот как это сделать в (Swift). Во-первых, я использовал this solution запустить команду оболочки:

func shell(launchPath: String, arguments: [String]) -> String 
{ 
    let task = NSTask() 
    task.launchPath = launchPath 
    task.arguments = arguments 

    let pipe = NSPipe() 
    task.standardOutput = pipe 
    task.launch() 

    let data = pipe.fileHandleForReading.readDataToEndOfFile() 
    let output: String = NSString(data: data, encoding: NSUTF8StringEncoding)! as String 

    return output 
} 

Затем после того, как немного играя в system_profiler, я обнаружил, что я был заинтересован в двух ключах, SPHardwareDataType и SPDisplaysDataType. Это заставило меня задаться вопросом, где находится system_profiler, но which system_profiler решил это. Так что я, наконец, получил то, что мне нужно было так:

let ai = shell("/usr/sbin/system_profiler", arguments: ["SPHardwareDataType", "SPDisplaysDataType"]) 

Результаты отформатированную строку, которая является довольно много хорошего к ходу, как это.

+0

Благодарим за обмен успешным кодом. –

+0

Нет проблем, и это очень полезно в качестве замены Gestalt в целом, если вы выберете правильные клавиши. Они должны построить это в API, ИМХО. –

1

Использование System Profiler из командной строки в терминале, или выполнение его как NSTask:

/usr/sbin/system_profiler | awk '/^Graphics/{p=1;print;next} /^[A-Z]/{p=0} p' 

Выход

Graphics/Displays: 

AMD Radeon R9 M395: 

    Chipset Model: AMD Radeon R9 M395 
    Type: GPU 
    Bus: PCIe 
    PCIe Lane Width: x16 
    VRAM (Total): 2048 MB 
    Vendor: ATI (0x1002) 
    Device ID: 0x6920 
    Revision ID: 0x0001 
    ROM Revision: 113-C905AA-799 
    EFI Driver Version: 01.00.799 
    Displays: 
    iMac: 
     Display Type: Retina LCD 
     Resolution: 5120 x 2880 Retina 
     Retina: Yes 
     Pixel Depth: 30-Bit Color (ARGB2101010) 
     Main Display: Yes 
     Mirror: Off 
     Online: Yes 
     Built-In: Yes 
+0

Должен ли я просто выполнить это в своем приложении, используя NSTask? Я никогда не пробовал это с трубой, здесь идет ... –

+0

Если вам нравится, что он делает, да. Или вы можете оставить материал 'awk' и проанализировать его с помощью Objective-C. –

+0

@MauryMarkowitz Просто добавил небольшое разъяснение, кстати. –

 Смежные вопросы

  • Нет связанных вопросов^_^