命令行 command line cmd 尝试 新建、自定义 文件描述符

  • echo 是什么?命令或位于MinGWcygwin的程序(echo.exe)?(无WindowsSystem32echo.exeWindowsSysWow64echo.exe之类的)
  • 使用 where echo 可(从当前目录和PATH环境变量指定的路径的中)查询文件位置。
  • echo 123 >&3 将命令的标准输出(文件符号1)重定向到文件符号3。相当于 echo 123 1>&3 。
  • echo 123 >3 在当前工作目录(默认,C:Users用户名)下生成了新文件3(如,C:Users用户名3test)。
  • 初始包含了0、1、2、3个文件符号。0是stdin,只读echo 123 >&0 报错系统无法写入指定的设备。 echo 123 >&4 报错重定向句柄 1 时,无法复制此句柄。
  •  echo <&1 ~ echo <&3 ,由于文件符号1~3内容为空,故,相当于执行了无参数的 echo ,输出ECHO 处于打开状态
  •  echo <&4 报错重定向句柄 0 时,无法复制此句柄。,相当于默认指定了标准输入(stdin)的文件符号 echo 0<&4 。
  •  mkfifo 没有测试成功——通过 mkfifo myfifo 建立后(,会在工作目录建立同名的快捷方式,属性中含如::c4:11b6备注),不知道如何使用(貌似直接按文件访问?但新建的文件名为myfifio.lnk,且不是全局有效,更换目录、工作文件夹后无法就地访问此文件)。(尝试了 cmd 4<&myfifo 报错此时不应有 4<&,尝试 cmd 4<myfifo 报错系统找不到指定的文件
  • 以上的问题在于没有新打开文件关联文件描述符。不如直接使用 > 或 >> 及 <或 <<写入读取文件。
  • windows缺少*nix的 exec 。
  • 尝试了Windows功能 - 适用于Linxu的Windows子系统(Windows Subsystem for Linux),需要额外(从应用市场)安装Lunix系统等等。
  • windows不支持process substitution
  • 结论,ffmpeg的stderr只能在stderr(2)或stdout(1)二选一。
    最终 os.execute"ffmpeg .. 2>&1 | tee log >&2" 
  • 参考
    cmd additional file descriptor - Google 搜索
    using exec in windows cmd - Google 搜索
    mkfifo windows - Google 搜索
原文地址:https://www.cnblogs.com/RobertL/p/14286118.html