2016-07-14 70 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

回答