如何在变量字符串中包含变量名,例如:execlp(“ ls”,“ ls”,“ / VARIABLE_NAME”,Null);?

时间:2019-08-31 19:06:34

标签: c exec execv

基本上,我想在与exec相关的参数的字符串中包含变量,所以如果我们有:

char myname[1024];
myname[1024] = "Michael";

然后当我调用execlp时,我希望将我的名字注入其中,以便程序将“ / home / variable”视为“ / home / Michael”:

execlp("ls","ls","/home/'VARIABLE'",Null);

在c#中,我们只能使用“'+ variable_name +'”,但这里的加号被视为二进制运算符,转义引号不适合我...

1 个答案:

答案 0 :(得分:1)

正如评论中提到的@TomKarzes一样,您可以使用

char a[2000]; sprintf(a, "/home/%s", myname);

,然后将a作为execlp的参数。

另一个问题是您未正确分配给myname。使用它来消除该错误:

char myname[1024] = "Michael";

但是,查看用户主目录的另一种(可能更好)的方法是(假设您没有将其硬编码为名为Michael的用户):

execlp("ls","ls",getenv("HOME"),(char *)NULL);

这使用getenv函数来获取用户的主目录,并将Null更改为(char *)NULL,以便更清楚。