我有一個非常簡單的程序:當我使用'|'時會發生什麼?或「<」,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)是錯誤的 –