Не могу добавить систему («выход»);в С - PullRequest
3 голосов
/ 10 января 2012

Я хотел бы выйти из моей программы с

system("exit");

в С. Я скомпилировал свой код с помощью gcc и запустил его через терминал. Но почему-то программа не выполнила вызов системы для выхода. Почему это случилось? Потому что, если бы я сделал system("clear"), он работал бы гладко

Ответы [ 6 ]

12 голосов
/ 10 января 2012

В C system() запускает оболочку и выполняет команду.exit выходит из оболочки.Ожидаемый результат будет в том, что ничего не происходит, какой результат вы получили?

Я думаю, что вы хотите:

#include <stdlib.h>
exit(EXIT_SUCCESS);
8 голосов
/ 10 января 2012

Вы должны просто сделать:

exit(0);

Также наверху поставить:

#include <stdlib.h>
4 голосов
/ 10 января 2012

system("exit") ничего не добьется, поскольку функция system просто передает аргумент интерпретатору команды (я думаю sh в большинстве систем?) Это означает, что вы просто создаете новую оболочку и затем сообщаетечтобы немедленно завершить работу.

РЕДАКТИРОВАТЬ: как уже говорили другие, если целью является прекращение работы вашей программы, используйте функцию exit, найденную в заголовке stdlib.h.

1 голос
/ 10 января 2012

Выход - это не командный вызов оболочки, а вызов библиотеки переменного тока.Так что он выйдет из оболочки, но не из программы.Попробуйте:

exit(0);

Или выйдите с любым кодом ошибки.

0 голосов
/ 10 января 2012

Для выхода из вашей программы все, что вам нужно - это вызов exit(). Функция exit() вызывает нормальное завершение процесса. Использование EXIT_SUCCESS или EXIT_FAILURE в качестве аргументов для exit() несколько более переносимо (для не-Unix-сред), чем использование 0 и некоторых ненулевых значений, таких как 1 или -1. Для использования функции exit() необходимо #include <stdlib.h>.

Более подробную информацию о exit() можно найти, используя man 3 exit

0 голосов
/ 10 января 2012

Зачем использовать system("exit")?просто используйте exit(int code);

system("exit") не существует

...