基本上,我想在与exec相关的参数的字符串中包含变量,所以如果我们有:
char myname[1024];
myname[1024] = "Michael";
然后当我调用execlp时,我希望将我的名字注入其中,以便程序将“ / home / variable”视为“ / home / Michael”:
execlp("ls","ls","/home/'VARIABLE'",Null);
在c#中,我们只能使用“'+ variable_name +'”,但这里的加号被视为二进制运算符,转义引号不适合我...
答案 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
,以便更清楚。