Если вы только увеличивали i
внутри блока if
, то, как только условие x[i] > max
оценивается как false
, i
не будет увеличиваться. И поскольку мы используем i
в качестве индекса для элемента массива, который нужно исследовать, значение x[i]
никогда не изменится, и поэтому цикл будет продолжаться вечно.
И, для чего стоит, когда вы выполняете итерацию по массиву, цикл for
лучше подходит, потому что он позволяет вам определять переменную итерации, условие и приращение - все в одном месте: [ 1111]
int[] x = new int[] { 5, 7, -100, 400, 8 };
int max = x[0];
for(int i = 1; i < x.Length; i++)
{
if (x[i] > max) max = x[i];
}
Console.WriteLine("MAX = " + max);
Можно использовать ps
чтобы найти завершение работы обрабатывают и прервать его, например, с ps|grep shutdown
.
Альтернативные и менее интенсивные глазным яблоком версии этого:
pkill shutdown
killall shutdown
kill `cat /var/run/shutdown.pid`
shutdown -c
"завершение работы отмены" на довольно недавнем shutdown
s.
Синтаксис также поддерживает shutdown -c <message>
в целях объявления, таким образом, это удобно, если другие люди используют машину.
От shutdown
страница справочника в системах BSD:
Запланированное завершение работы может быть отменено путем уничтожения процесса завершения работы (SIGTERM должен быть достаточным).
Если вы на секунду опаздываете на ничью shutdown -c
, и уже root на консоли очень быстрый # init 5
отменит завершение работы после изменения уровня запуска init.
ПРИМЕЧАНИЕ. Этот ответ в настоящее время в основном устарел. init 5
не очень полезен для systemd, который, к сожалению, большинство систем сейчас используют.