3

暗号化されたデータを記述するために作成したpopenコマンドに文字列変数を渡す必要があります。使用する必要のあるコードセグメントは次のとおりです。

char a[]="Encrypted data";
popen("openssl aes-256-cbc -d -a -salt <a-which is the data i have to pass here>","r");

この変数をコマンドに渡すにはどうすればよいですか。私は試してみました:

popen("openssl aes-256-cbc -d -a -salt %s",a,"r");

しかし、コンパイル時に、popenに渡される引数が多すぎるというエラーが表示されました。助けてください。前もって感謝します。オペレーティングプラットフォーム:Linux

4

2 に答える 2

5

snprintfpopenに渡されるコマンド文字列を作成するために使用します。

FILE * proc;
char command[70];
char a[]="Encrypted data";
int len;
len = snprintf(command, sizeof(command), "openssl aes-256-cbc -d -a -salt %s",a);
if (if len <= sizeof(command))
{
    proc = popen(command, "r");
}
else
{
    // command buffer too short
}
于 2012-06-22T07:31:03.957 に答える
2

snprintf引数にスペース、引用符、またはその他の特殊文字が含まれている場合、を使用してコマンド文字列を作成すると中断します。

Unixプラットフォームでは、代わりにpipeパイプを作成するために使用する必要があります。次に、でサブプロセスを起動し、サブposix_spawnpプロセスのstdoutをパイプの入力端に接続しposix_spawn_file_actions_adddup2ます。

于 2012-06-22T08:48:22.687 に答える