Чтобы надежно стереть жесткий диск, я рекомендую использовать Secure Erase
Функция system(...) в C принимает команду как строку (которая является массивом символов в C) и передает ее в процессор / оболочку по умолчанию для операционной системы по умолчанию.
В Windows, это будет сделано с помощью cmd.exe, который имеет внутреннюю команду pause, которая печатает что-то вроде «Нажмите любую клавишу, чтобы продолжить ...», и ждет события клавиатуры перед тем, как он уйдет.
Однако, Ubuntu, к счастью, не имеет cmd.exe, но использует sh здесь как свою оболочку по умолчанию (которая внутренне dash), у которой нет команды pause. Вместо этого вы можете использовать что-то вроде этого:
read -p 'Press Enter to continue...' var
См. Что такое эквивалент bash команды паузы DOS? и что эквивалентно Linux для приостановки DOS? (Stack Overflow), но обратите внимание, что C вызывает sh здесь, а не bash.
Итак, в вашем C-коде строка может быть заменена на:
system("read -p 'Press Enter to continue...' var");
Это сделало бы вашу программу доступной только для Linux-систем с sh -совместимыми оболочками, хотя в этой форме она больше не работала бы в Windows.
Однако обратите внимание, что использование system("pause"); или аналогичные (даже не зависящие от платформы) альтернативы, как правило, обескуражены по причинам, хорошо объясненным в . Каков эквивалент bash команды паузы DOS?
Функция system(...) в C принимает команду как строку (которая является массивом символов в C) и передает ее в процессор / оболочку по умолчанию для операционной системы по умолчанию.
В Windows, это будет сделано с помощью cmd.exe, который имеет внутреннюю команду pause, которая печатает что-то вроде «Нажмите любую клавишу, чтобы продолжить ...», и ждет события клавиатуры перед тем, как он уйдет.
Однако, Ubuntu, к счастью, не имеет cmd.exe, но использует sh здесь как свою оболочку по умолчанию (которая внутренне dash), у которой нет команды pause. Вместо этого вы можете использовать что-то вроде этого:
read -p 'Press Enter to continue...' var
См. Что такое эквивалент bash команды паузы DOS? и что эквивалентно Linux для приостановки DOS? (Stack Overflow), но обратите внимание, что C вызывает sh здесь, а не bash.
Итак, в вашем C-коде строка может быть заменена на:
system("read -p 'Press Enter to continue...' var");
Это сделало бы вашу программу доступной только для Linux-систем с sh -совместимыми оболочками, хотя в этой форме она больше не работала бы в Windows.
Однако обратите внимание, что использование system("pause"); или аналогичные (даже не зависящие от платформы) альтернативы, как правило, обескуражены по причинам, хорошо объясненным в . Каков эквивалент bash команды паузы DOS?
Функция system(...) в C принимает команду как строку (которая является массивом символов в C) и передает ее в процессор / оболочку по умолчанию для операционной системы по умолчанию.
В Windows, это будет сделано с помощью cmd.exe, который имеет внутреннюю команду pause, которая печатает что-то вроде «Нажмите любую клавишу, чтобы продолжить ...», и ждет события клавиатуры перед тем, как он уйдет.
Однако, Ubuntu, к счастью, не имеет cmd.exe, но использует sh здесь как свою оболочку по умолчанию (которая внутренне dash), у которой нет команды pause. Вместо этого вы можете использовать что-то вроде этого:
read -p 'Press Enter to continue...' var
См. Что такое эквивалент bash команды паузы DOS? и что эквивалентно Linux для приостановки DOS? (Stack Overflow), но обратите внимание, что C вызывает sh здесь, а не bash.
Итак, в вашем C-коде строка может быть заменена на:
system("read -p 'Press Enter to continue...' var");
Это сделало бы вашу программу доступной только для Linux-систем с sh -совместимыми оболочками, хотя в этой форме она больше не работала бы в Windows.
Однако обратите внимание, что использование system("pause"); или аналогичные (даже не зависящие от платформы) альтернативы, как правило, обескуражены по причинам, хорошо объясненным в . Каков эквивалент bash команды паузы DOS?
Первое правило вызова system() - никогда не использовать его, если у вас нет веской причины. Он запускает оболочку в качестве подпроцесса, который a) является несколько дорогой операцией, и b) открывает полный командный язык оболочки (что ужасно, если вы создаете командную строку от ввода от пользователя).
Здесь вы пытаетесь добиться этого, распечатываете приглашение и ожидаете нажатия клавиши. Вы уже знаете, как печатать что-то, и чтение не намного сложнее. Либо переходите через getchar(), пока не увидите новую строку (\n), или прочитайте полную строку с fgets().
Однако, поскольку вы ранее использовали scanf(), новая строка, заканчивающаяся на входе пользователя, все равно будет во входном буфере. Это связано с тем, что терминал обычно предоставляет программе только полные строки, но scanf("%d") не использует детали после цифр. fgets() также лучше подходит для поведения терминала здесь.
Первое правило вызова system() - никогда не использовать его, если у вас нет веской причины. Он запускает оболочку в качестве подпроцесса, который a) является несколько дорогой операцией, и b) открывает полный командный язык оболочки (что ужасно, если вы создаете командную строку от ввода от пользователя).
Здесь вы пытаетесь добиться этого, распечатываете приглашение и ожидаете нажатия клавиши. Вы уже знаете, как печатать что-то, и чтение не намного сложнее. Либо переходите через getchar(), пока не увидите новую строку (\n), или прочитайте полную строку с fgets().
Однако, поскольку вы ранее использовали scanf(), новая строка, заканчивающаяся на входе пользователя, все равно будет во входном буфере. Это связано с тем, что терминал обычно предоставляет программе только полные строки, но scanf("%d") не использует детали после цифр. fgets() также лучше подходит для поведения терминала здесь.
Первое правило вызова system() - никогда не использовать его, если у вас нет веской причины. Он запускает оболочку в качестве подпроцесса, который a) является несколько дорогой операцией, и b) открывает полный командный язык оболочки (что ужасно, если вы создаете командную строку от ввода от пользователя).
Здесь вы пытаетесь добиться этого, распечатываете приглашение и ожидаете нажатия клавиши. Вы уже знаете, как печатать что-то, и чтение не намного сложнее. Либо переходите через getchar(), пока не увидите новую строку (\n), или прочитайте полную строку с fgets().
Однако, поскольку вы ранее использовали scanf(), новая строка, заканчивающаяся на входе пользователя, все равно будет во входном буфере. Это связано с тем, что терминал обычно предоставляет программе только полные строки, но scanf("%d") не использует детали после цифр. fgets() также лучше подходит для поведения терминала здесь.