#include <stdlib.h>
int main(int argc, char const *argv[]) {
system("/bin/sh");
return 0;
}
如果你只是运行程序,bash 会打开,如果你创建一个文件 echo "ls" > test 并运行程序
cat test | ./a.out
然后 ls 将起作用并且程序将关闭,为什么会发生这种情况,并且在 bash 中不需要进一步的命令?
如果它像这样工作:
cat test - | ./a.out
你能帮我弄清楚管道逻辑吗?
bash 将一直运行,直到输入流关闭。
cat test
将文件的内容发送到标准输入并关闭它。Acat test -
在文件之后继续将其标准输入重定向到下一个进程的标准输入。