【发布时间】:2017-03-29 00:59:24
【问题描述】:
execvp 不接受我从 int 到 char 的转换。它不会在我的 bash 中写入任何文本。但如果我声明 -> Data = "134";有用。似乎转换是一个问题,并且该函数承认这一点。
我该如何解决这个问题?最后,我想将我的数字值发送到 str 所在的位置。
int set1 = 134;
int set2 = 2;
int set3 = 3;
char *Data;
Data = (char) set1;
char *str[80];
strcpy(str, "some,");
strcat(str, "text,");
strcat(str, Data);
char *name[] = {
"mosquitto_pub",
"-d",
"-t",
"SomeName",
"-m",
str,
NULL
};
execvp(name[0], name);
【问题讨论】:
-
execvp的返回值是多少?你的errno有变化吗? -
不要使用演员表。
-
man sprintf是你的朋友 -
@KerrekSB 为什么?有什么特别的原因吗? cprogramming.com/tutorial/c/lesson11.html
-
@Dai 我不知道。我怎样才能检查它?我从小就开始这个功能,因为我的程序的其余部分必须继续。如果我只是在我的主程序中创建了该函数,那么该执行将结束调用它的进程。