У меня есть сгенерированный C ++ исполняемый файл в Solaris 8. У меня проблема в том, что этот исполняемый файл использует для запуска параметр командной строки.
Например:
$ myprog 123412341234AB
Этодействительное 14-значное шестнадцатеричное значение.Однако, если по какой-либо причине существуют такие символы, как ^ > < >> << &
и т. Д., Программа сама по себе не работает должным образом.Я не говорю о дампах ядра как таковых, но, например, одна из проверок, которые я делаю, - через isxdigit.По-видимому, недостаточно ловить что-то вроде 1234123412341^
или 12341234(12341
, поэтому я просто пытаюсь понять, смогу ли я обнаружить все эти символы в попытке просто правильно выйти.Я имею в виду, что некоторые из этих символов имеют особое значение в Unix, и я думаю, именно поэтому программа не понимает, как с этим обращаться.
Есть ли у вас мысли о том, как решить эту проблему?Я просто пытаюсь найти все эти символы, и как только я обнаруживаю их в команде, я просто выхожу с сообщением об ошибке?Как бы я поступил так?
Я использую std::string
.Так что, может быть, список типа !@#$%^&*()<><<>>
и т. Д., Где я могу обнаружить и выйти.Я не уверен, есть ли более простой способ сделать это, поэтому Unix не думает, что я даю ему системную команду, хотя на самом деле это просто ввод в программу, хотя это просто неверный / недействительный ввод.