您好我有一个运行两个程序的脚本
#Script file
./prog1
./prog2
prog1是一个C程序
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv){
printf("prog1 running\n");
int tmp;
scanf("%d", &tmp);
printf("%d\n", tmp+10);
printf("prog1 ended\n");
return 0;
}
prog 2也是一个C程序
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv){
printf("prog2 running\n");
int tmp;
scanf("%d\n", &tmp);
printf("%d\n", tmp+10);
printf("prog2 ended\n");
return 0;
}
我运行命令
./ script&lt;档案
文件是
123
456
输出
prog1 running
133
prog1 ended
prog2 running
10
prog2 ended
似乎prog2没有从文件中获取输入,引擎盖下发生了什么?
prog2是否可能花费了#34; \ n&#34;而不是数字?
答案 0 :(得分:0)
你的脚本应该是这样的:
#!/bin/bash
exec 3<&1
tee >(./prog2 >&3) | ./prog1
这使用tee
命令复制stdin和最近的>()
bash功能来打开临时文件描述符。 (使用filedesriptor 3来分割stdout而没有并行性。)
请参阅this answer阅读整个故事。