我正在使用ash而不是bash的嵌入式系统,我正在尝试从交叉编译的C程序中调用脚本。
它正在工作,但不是像我要求的后台流程。事实上,似乎strcat命令不起作用,但它击败了我的原因。
在C上相当新,它必须是明显的东西。
代码:
char mycall[230] = "/home/root/myscript.sh ";
char inbackground[3]= " &";
// buf is initiated and will be used as a parameter, string length is about 20 characters
strcat(buf,inbackground);
strcat(mycall,buf);
printf("%s", mycall); // this will display the command and parameter that was stored with
// in buf correctly, but without the ampersand at the end
system(mycall); // executes correctly
屏幕显示:
sh: syntax error: "&" unexpected
为什么要这样做?
答案 0 :(得分:1)
我的猜测是buf
最后包含换行符('\n'
)。也许其他一些不可显示的角色。
你需要过滤掉那些不需要的东西。
由于我们没有准确显示buf
是如何设置的(或者是什么类型),所以无论1buf1指向哪个都没有足够的空间来容纳其他字符。您可能希望重新连接这样的连接,以避免必须修改buf
:
strcat(mycall,buf);
strcat(mycall,inbackground);