用作bash系统调用的strcat结果不喜欢&符号

时间:2010-12-06 15:43:41

标签: c strcat

我正在使用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

为什么要这样做?

1 个答案:

答案 0 :(得分:1)

我的猜测是buf最后包含换行符('\n')。也许其他一些不可显示的角色。

你需要过滤掉那些不需要的东西。

由于我们没有准确显示buf是如何设置的(或者是什么类型),所以无论1buf1指向哪个都没有足够的空间来容纳其他字符。您可能希望重新连接这样的连接,以避免必须修改buf

strcat(mycall,buf);
strcat(mycall,inbackground);