什么是Unixpipe道的Windows(Win32)命令行相当于:
myprog myarg | cat >out.dat
请注意,我想要一个pipe道,以testingmyprog可以成功写入pipe道,所以请不要简化到这个:
myprog myarg >out.dat
我猜想是这样的
myprog myarg | copy /b con out.dat
会工作,但我没有一台Windows机器来检查。
请注意,生成的数据是二进制的,它包含所有可能的字节值0到255,并且它们都必须完整保留,没有任何转换。
在这个例子中,没有什么东西可以与Windows中的cat
相提并论。 您建议的命令( copy /b con
)肯定不会起作用,因为con
是控制台设备,而不是标准输入。
你可以尝试Win32的GNU工具 ,其中包括一个cat
的端口。 否则,您可能需要编写自己的代码,这当然很简单。
由于Windows没有附带这样的程序,所以在C
#include <stdio.h> #include <io.h> #include <fcntl.h> int main() { char buffer[16384]; int count; _setmode(_fileno(stdin), _O_BINARY); _setmode(_fileno(stdout), _O_BINARY); while ((count = fread(buffer, 1, sizeof(buffer), stdin)) != 0) fwrite(buffer, 1, count, stdout); return 0; }
您可以轻松修改它以写入您选择的文件而不是stdout
。