2016-07-14 72 views
0

我在OSX上。 这是我的C++代码:终端命令和C++系统(...)命令返回不同的结果

char * lCommandChar = lCommand; 
std::cout << lCommandChar << std::endl; 
int lSystRep = system(lCommandChar); 

控制台显示:

echo -n "d2b16b956644ba30a73e9b116a4a4f4099add017" | /usr/bin/openssl dgst -verify /Users/me/opm.public -sha1 -signature /Users/me/Library/Caches/OrchPlay/temp_sig.bin 
Verification Failure 

如果我打开终端,并复制以前的日志我:

$ echo -n "d2b16b956644ba30a73e9b116a4a4f4099add017" | /usr/bin/openssl dgst -verify /Users/me/opm.public -sha1 -signature /Users/me/Library/Caches/OrchPlay/temp_sig.bin 
Verified OK 

在哪里可以区别2系统调用之间?

编辑:我终于用-d显示调试输出,我可以看到明显与读取签名的差异: 我的代码返回:

BIO[6100000C01read(0,8192) - FILE pointer 
BIO[6100000C01read return 44 

终端的回报:

BIO[7FB060C152read(0,8192) - FILE pointer 
BIO[7FB060C152read return 40 

但我仍然不知道如何解决这个问题。

+0

你检查用户权限?也许你的应用程序不允许访问其中一个文件... – Wum

+0

是的,它似乎没有关系。 – BaptisteB

+0

当您将开关“-verbose”添加到openssl命令时,您会得到哪种输出? – Wum

回答