我有一个非常简单的程序:当我使用'|'时会发生什么?或“<”,C++
void main()
{
fgets(buf,133,stdin);
printf(buf);
system("/bin/dash");
}
当我启动程序,这一切工作正常,我可以输入任何我想要的,然后我有一个壳。但是,如果我为了自动补BUF(不使用键盘打字点儿)做
$ echo 'blabla' | ./test
,外壳被执行,但是,/ bin中/ LS工作正常的情况下。 (显然的显示命令的工作精细)
如果删除了与fgets线,并且我执行相同的命令,它的工作原理,但需要的“布拉布拉”作为/斌/破折号的参数。然而,添加一个nul字符或返回'\ xd'来模拟我的键盘在fgets中的返回不起作用
我想了解当我使用'|'时会发生什么,符号在我的C++程序中。我认为这是在没有任何人为干预的情况下自动填充scanfs和fgets的解决方案,我是做错了还是有其他解决方案?
谢谢。
的Debian,C++ G ++
在标准C++主总是返回'int' – NathanOliver
HTTP://meta.stackexchan ge.com/questions/66377/what-is-the-xy-problem? –
['void main()'](http://stackoverflow.com/q/204476/995714)是错误的 –