2016-07-14 14 views
0

Ich bin auf OSX. Das ist mein C++ Code:Terminal-Befehle und C++ System (...) Befehl gibt unterschiedliche Ergebnisse zurück

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

Die Konsolenanzeige:

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

Wenn ich den Terminal öffnen und das vorherige Protokoll Ich habe kopieren:

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

Wo kann der Unterschied zwischen den 2 Systemaufrufen?

Edit: Ich habe endlich die -d die Debug-Ausgabe angezeigt werden, könnte ich einen Unterschied sieht offenbar im Zusammenhang mit dem Lesen der Unterschrift: Mein Code zurückkehrt:

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

Das Terminal kehrt:

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

Aber ich weiß immer noch nicht, wie das zu beheben ist.

+0

Haben Sie die Benutzerrechte überprüft? Vielleicht darf Ihre App nicht auf eine der Dateien zugreifen ... – Wum

+0

Ja, das scheint nicht damit zu tun zu haben. – BaptisteB

+0

Welche Ausgabe erhalten Sie in beiden Fällen, wenn Sie den Befehl "-verbose" zu Ihrem openssl-Befehl hinzufügen? – Wum

Antwort

Verwandte Themen