Этот символ канала (|
) означает, что вывод sudo apt-get update
направляется на вход sudo apt-get -y install apache2 zip unzip
.Хотя это на самом деле не имеет никакого смысла, это означает, что оба запускаются одновременно, а это не то, что вам нужно.
Либо замените один вызов двумя отдельными вызовами system ():
system("sudo apt-get update");
system("sudo apt-get -y install apache2 zip unzip");
Обратите внимание, что когда вы вызываете system (), ваша программа не возобновляет работу, пока не завершится запущенный вами процесс, поэтому это означает, что первый вызов будет выполнен, а затем второй.
Или заменитеканал с &&
(не обязательно гарантирует работу, хотя на самом деле он должен работать в любой системе Linux):
system("sudo apt-get update && sudo apt-get -y install apache2 zip unzip");
Это означает, что правая часть команды будет выполняться только если левая-стороны выходит без ошибок (технически, имеет статус выхода 0).
Вместо этого вы также можете заменить канал точкой с запятой (;
), которая должна выполнять обе команды в последовательности, независимо от выходастатус первой команды.