0

私は動作するこのコードを持っています (それは少し取り除かれています):

char *parmList[6];

parmList[0] ="/root/ssl_send";
parmList[1] ="-m 1";            
...etc...
parmList[5] = NULL;
execvp(parmList[0], parmList);

ここで、sprintf を使用して、このリスト内の 1 つの文字列に何かを書き込みたいと考えています (*parmList[6] の 1 つのポインターが sprintf で構築された char 配列を指すようにしたいと言った方が正しいでしょう)。常に「セグメンテーション エラー」が発生します。私が試してみました:

  • mallocを使用して、
  • double 配列を宣言してメモリ空間を確保する
  • snprintf を使用して、....

私は明らかに何か間違ったことをしています。問題は Sprintf Segmentation Faultに似ていますが、execvp のポインター/char_arrays のリストが必要なだけです。

4

1 に答える 1

1

sprintf を使用して文字列を作成し、その文字列を引数リストで使用するコードを次に示します。sprintf 出力に十分なスペースを割り当ててください。

char *parmList[6];
parmList[0] = "/bin/ls";
char arg1[10];
sprintf(arg1, "%s", "-l");
parmList[1] = arg1;
parmList[2] = NULL;
execvp(parmList[0], parmList);
于 2012-04-19T07:54:48.170 に答える