为什么system()在win7上总是返回127?

时间:2018-12-18 15:39:39

标签: c++ windows-7 cygwin

我正在将c ++程序从Unix移植到Win7。该程序仅执行一些后台计算任务,它是一个命令行程序。因此,我使用cygwing++上的32位win7 VM上构建程序。

我的目标系统是64位win7物理PC。将程序复制到目标PC后,它总是在system()调用中失败。我需要使用system()来运行curl命令。这可以在我的32位win7 VM上运行,但在目标64位win7 PC上总是失败。

您可能会猜测curl命令是否有问题。我会说不。因为我可以从cmd窗口手动运行curl命令。我还尝试过system("dir"),它也失败,并出现相同的错误。

在64位win7 PC上,system()始终返回127,错误是“权限被拒绝”。有人知道问题出在哪里吗?

1 个答案:

答案 0 :(得分:0)

两点。 1)使用64位VM为64位物理机构建程序。您必须在物理计算机上安装32位或64位cygwin,才能为cygwin1.dll提供exe所需的位数。如果您不想在物理计算机上安装cygwin,请使用G ++编译器的mingw32或mingw64版本。使用cygwin file命令检查exe的位数,并检查它是cygwin还是mingw exe。

2)Windows API提供了从子进程到其父进程的8位返回码。使用0到127可以避免指定代码是带符号的还是无符号的。顺便说一句,没有dir.exe,它是命令处理器的一部分,例如cmd.exe