我有下面的代码可以工作(有点简化):

char *parmList[6];

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


现在,我想使用sprintf在此列表中的一个字符串上写一些东西(更正确的说法是我希望* parmList [6]的一个指针指向由sprintf构造的char数组)。我一直都在收到“细分错误”。
我试过了:


使用malloc
声明一个双精度数组,以便保留存储空间,
使用snprintf,....


我显然做错了。问题与Sprintf Segmentation Fault类似,只是我需要为execvp提供一个指针/ char_arrays列表。

最佳答案

这是使用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);

10-07 23:00