Если ping не может сделать это, вы не можете сделать это на другом языке. Вот аналогия, которая может помочь вам понять, почему. Допустим, в файловой системе есть файл, и вы хотите его содержимое. Вы запускаете cat filename
, и он говорит cat: filename: Permission denied
. Как вы думаете, Perl (или любой другой язык) будет лучше, чем C здесь? Давайте попробуем:
#!/usr/bin/perl
use strict;
use warnings;
die "usage: $0 filename" unless @ARGV == 1;
my $filename = shift;
open my $fh, "<", $filename
or die "could not open $filename: $!\n";
print while <$fh>;
При запуске с файлом появляется сообщение could not open filename: Permission denied
. Неважно, на каком языке вы пытаетесь использовать, вы получите Operation not permitted
.
Тем не менее, существуют и другие методы определения, жива ли машина. Если есть сервер, который, как известно, всегда работает на компьютере, вы можете попытаться подключиться к нему. Обратите внимание, что вам не нужно завершать соединение (например, войти в систему), достаточно лишь одного факта, что вы можете успешно инициировать соединение, чтобы знать, что окно установлено.