Почему system () всегда возвращает 127 на win7? - PullRequest
0 голосов
/ 18 декабря 2018

Я портирую программу на c ++ с Unix на Win7.Программа выполняет только некоторые фоновые вычислительные задачи, это программа командной строки.Поэтому я использую сборку программы на cygwin с g++ на 32-битной виртуальной машине win7.

Моя целевая система - 64-битный физический ПК win7.После того, как я скопировал свою программу на целевой ПК, она всегда дает сбой при вызове system().Мне нужно использовать system() для запуска curl команды.Это работает на моей 32-битной виртуальной машине win7, но всегда дает сбой на целевом 64-битном ПК win7.

Вы можете догадаться, если у команды curl есть проблема.Я бы сказал нет.Потому что я могу вручную запустить команду curl из окна cmd.Я также пытался system("dir"), он также не работает с той же ошибкой.

На 64-битном ПК win7 system() всегда возвращает 127, ошибка «Отказано в доступе».Кто-нибудь знает, в чем проблема.

1 Ответ

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

Два очка.1) Используйте 64-битную виртуальную машину для создания программы для 64-битной физической машины.На физическом компьютере должен быть установлен 32-битный или 64-битный Cygwin, чтобы обеспечить cygwin1.dll битностью, требуемой exe.Используйте версию компилятора g ++ для mingw32 или mingw64, если вы не хотите устанавливать cygwin на физическую машину.Используйте команду cygwin file, чтобы проверить битность exe-файла и проверить, является ли он cygwin или mingw exe.

2) Windows API предоставляет 8-битный код возврата от дочернего процесса кего родитель.Использование от 0 до 127 позволяет избежать указания, является ли код подписанным или неподписанным.Кстати, там нет dir.exe, это часть командного процессора, например cmd.exe.

...