Командный процессор против Консоли в C ++ - PullRequest
0 голосов
/ 19 декабря 2018

Я создаю консольное приложение C ++ и хочу проверить, доступен ли командный процессор:

if (!system(NULL))  //check to see if command processor is available
{
    fprintf(stderr, "Error: Command processor not available\n");
    exit(EXIT_FAILURE);
}

Мой вопрос: может ли консольное приложение существовать или работать без подключения к нему командного процессора?Если при создании консоли она всегда каким-либо образом связана с командным процессором, то приведенный выше код будет избыточным.В противном случае появится окно консоли, программа будет работать нормально, но я просто не могу использовать system ().

1 Ответ

0 голосов
/ 19 декабря 2018

Если у вас есть консольное приложение, вы будете запускать свою программу из командного процессора.Следовательно, командный процессор доступен в контексте вашей программы.

Возможно, с некоторой хитростью можно «спрятать» указанный процессор от вашего процесса, но я не знаю, как это сделать на любой ОС.

В более общем смысле, тем не менее, поскольку C ++ является абстрактным «многоцелевым» языком, теоретически возможно, что для некоторой данной программы P в некоторой среде E командный процессор недоступен, но на практике я не могу придумать пример.Возможно, когда, скажем, пишете модуль ядра?

В целом, я бы не стал беспокоиться об этой проверке, если у вас уже не было оснований полагать, что в среде выполнения может быть что-то «необычное» - вам нужно обрабатывать ошибкигенерируется вашими "настоящими" system звонками в любом случае.

Тем не менее, не повредит.

...