问题标签 [dev-null]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 用于检查命令行是否重定向到 /dev/null 的 C 代码
我正在编写一个 C 程序,该程序输出stdout
到stderr
. 该程序接受一个命令,例如:
我的程序既可以输出到stdout
文件,也可以被定向到输出文件,但不能重定向到/dev/null
. 例如:
我尝试使用isatty(1)
,但它只能检测是否stdout
正在输出到终端。因此,对于stdout
重定向到文件的情况,它会失败,这在我的情况下是可以接受的
有没有办法在C中检查这个?如果没有,有什么建议我可以检查 /dev/null 场景吗?
bash - 如何使用陷阱终止包含来自/dev/null 的重定向馈送的ffmpeg 的while 循环?
我在这里发现循环调用过程需要很长时间才能完成。我该如何摆脱它?从 find 到调用 ffmpeg cli [HandBrakeCLI] 的 while 循环的管道将不会处理多个输入文件,因为 ffmpeg 有一个怪癖,它会一次性“吃掉”所有输入列表并“饿死”循环。
解决方案是根据http://mywiki.wooledge.org/BashFAQ/089从/dev/null重定向,并且效果很好。然而,它让我回到了最初的问题和我要解决的问题:
因为 /dev/null 现在有一个完整的列表,包含所有提供给 HandBrakeCLI 的文件,ctrl-c 本身不足以退出循环。
我已经尝试了各种陷阱排列,但除了停止 HandBrakeCLI 处理当前输入之前,我无法让它做任何事情,然后再继续下一个。它不是立即终止循环,而是在 HandBrakeCLI 行之后立即处理 mv。
所以,有两件事我在这里没有得到: 1. 如何使用 ctrl-c 或 kill 命令终止所有内容?2、如(1.)未处理,如何防止循环内的mv被执行?
为了解决这个问题,这是代码的简化版本:
git - 无法拉取,因为使用 VS2015/Git 存在未提交的更改
想象以下场景:
经理创建了一个团队项目,并决定使用(最新的)git 作为项目的 VCS。开发团队将使用(最新的)VS2015(企业)IDE。Manager 创建了一个名为“master”的新(原始)分支,然后将 2 个文件提交并推送到该分支。
项目文件层次结构:
由“Jym”和“Bennie”组成的开发团队已经拉取了 origin/master 分支(并且他们都在本地/master 分支上工作)。Jym 已提交并推送第一个更改到“notes.txt”文件(直接到主分支)。Bennie 创建了一个名为“todos.txt”的新文件,并对“notes.txt”文件进行了一些更改。现在,当 Bennie 尝试同步/拉取更改(Jym 之前所做的)时,同步窗口中会显示以下消息:
无法拉取,因为有未提交的更改。在再次拉取之前提交或撤消您的更改。有关详细信息,请参阅输出窗口。
为了让团队变得更糟,Bennie 也遇到了与去年 12 月底公开的完全相同的问题。这意味着 Bennie 实际上无法运行任何 git 命令(但是,除了“撤消”之外的所有功能似乎都可以与 Visual Studio Git/TFS 提供程序一起正常工作——他觉得这很奇怪)。
也正因为如此,这个问题不是(可能)与另一个问题重复。
如何解决 Bennie 遇到的问题(来自上述场景)(当然只使用 Visual Studio)?
如果我可以提供更多详细信息,请发表评论。
编辑 1 (解决“空”设备的建议答案的输出):第一步
的结果:那不是那个答案中的错字,“nul”不应该是“nil”吗?
第二步(设备管理器)的结果:选中“查看”->“显示隐藏的设备”选项后,任何设备名称中都没有带有“警告”小图标(未知/无法识别的设备)或“空”的设备。
Also, apparently "Non-Plug and Play Drivers" type is not even being listed (of course when View -> "Devices by type" is selected).
第三步的结果:%SystemRoot%\system32\drivers\null.sys
文件已经存在并从磁盘中删除(从 Windows 10 复制并粘贴到 null.sys 文件中)。
更多详细信息:右键单击任何这些 sys 文件后,上下文菜单中没有“安装”或“卸载”选项,默认操作似乎是“打开方式...”(以粗体显示)。
第四步的结果:尝试合并null.reg失败。重新分配注册表项的所有者HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root
,同时设置适当的权限。更新注册表项权限后,
null.reg文件已成功合并到注册表中。
重新启动计算机。
等待最终答案...错误仍在显示!
编辑 2(测试 PATH 环境变量):
仍然发生相同的错误(即使在以管理员身份打开 git-cmd.exe 或 git-bash.exe 之后)。
编辑 3(电源选项,不使用“允许计算机进入离开模式”设置):
参考线程。
编辑 4:
Bennie 将他的机器从 Windows 8.1 升级到 10 后,问题已经解决。我们现在可以简单地得出结论,操作系统已损坏。
node.js - 在 Windows 上使用 NUL 目录搞砸了我的 Git
我让这段代码在 Node.js 代码库中运行了一段时间:
它在我的机器上的项目根目录下放置了一个幽灵文件('NUL'),我无法 git rm 它或永久删除它。有这个文件似乎使 git 非常不可靠。提交似乎并不完全有效。
有人知道这有什么用吗?
bash - /dev/null 的副本根据位置具有不同的行为
我尝试在另一个位置模仿 /dev/null 的行为,但出现了一些奇怪的错误。我学习了如何在-bash: /dev/null: Permission denied中生成类似于 /dev/null 的特殊文件。
在某个文件夹(例如 home)中时,会发生以下情况:
另一方面,当在 /dev 中时,不会发生错误:
我可以在另一台 xubuntu 机器上重现该错误,但在第三台机器上该错误不会发生。有什么线索吗?
奇怪的是,在任何这些机器上,权限和主要/次要都是相同的:
复制 /dev/null 时也一样
ruby - 重新打开STDOUT到/dev/null时指定文件模式有什么意义?
我正在阅读一个示例 ruby 脚本,该脚本通过分叉创建一个守护进程,创建一个新会话,再次分叉,然后将标准输入、标准输出、标准错误重定向到 /dev/null
这是重定向的片段:
在这种情况下指定文件模式('a'
)有什么意义?行为是否会有所不同,例如,与
甚至
?
python - Python suppress shell output
My Python script is calling a shell command via os.system as:
If I run this command without Python, the output is suppressed, in Python, however, it still prints the output.
What am I doing wrong?
java - 使用 ProcessBuilder 丢弃/错误的独立于平台的方法
在 Unix 上,您可以使用以下命令丢弃进程的输出:
在 Windows 上,您需要使用NUL
. 是否有比以下代码段更好的选择来支持任意平台?
这看起来很笨拙,但是ProcessBuilder.Redirect.NULL
在 API 中没有可以使用的字段或看似任何其他方式来执行此操作。
我也有点担心这不能处理非 Unix-non-Windows 的情况(但我不确定这种情况是否存在)。
我知道Java 和类似问题的平台无关 /dev/null 输出接收器,但是使用无操作OutputStream
仍然需要启动一个线程来主动丢弃输出 - 我更愿意让操作系统为我做.
solaris - 重定向 null 使文件不可读
我正在使用solaris 操作系统。问题是当重定向/dev/null
到“越来越大的日志文件”时,它变得不可读。它也有助于将文件大小减小到零,但我无法使用less
命令打开它,du
错误提示它是“二进制文件,你想打开它吗?”
你知道如何解决这个问题吗?