问题标签 [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.

0 投票
3 回答
2560 浏览

c - 用于检查命令行是否重定向到 /dev/null 的 C 代码

我正在编写一个 C 程序,该程序输出stdoutstderr. 该程序接受一个命令,例如:

我的程序既可以输出到stdout文件,也可以被定向到输出文件,但不能重定向到/dev/null. 例如:

我尝试使用isatty(1),但它只能检测是否stdout正在输出到终端。因此,对于stdout重定向到文件的情况,它会失败,这在我的情况下是可以接受的

有没有办法在C中检查这个?如果没有,有什么建议我可以检查 /dev/null 场景吗?

0 投票
1 回答
315 浏览

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被执行?

为了解决这个问题,这是代码的简化版本:

0 投票
1 回答
21436 浏览

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 后,问题已经解决。我们现在可以简单地得出结论,操作系统已损坏。

0 投票
2 回答
725 浏览

matlab - Matlab中是否有空设备?

我正在尝试找到一种简单的方法来打开和关闭对文本文件的日志记录,就像在 Python 中看到的示例一样。他们的解决方案是在需要记录的地方使用有效的文件名,否则使用空设备。 'dev/null'他们正在使用重定向,但我希望使用fopen.

是否有某种方法可以执行以下操作,如果重要的话,哪个词适用于 Unix 或 Windows 系统。

我正在更改的脚本可以通过在某些破坏场景中进行详细记录而受益匪浅,在这些场景中,我们希望为少数文件提取精细级别的详细信息,但对于脚本通常针对的批处理而言,否则会变得太大。

0 投票
1 回答
277 浏览

node.js - 在 Windows 上使用 NUL 目录搞砸了我的 Git

我让这段代码在 Node.js 代码库中运行了一段时间:

它在我的机器上的项目根目录下放置了一个幽灵文件('NUL'),我无法 git rm 它或永久删除它。有这个文件似乎使 git 非常不可靠。提交似乎并不完全有效。

有人知道这有什么用吗?

0 投票
1 回答
105 浏览

bash - /dev/null 的副本根据位置具有不同的行为

我尝试在另一个位置模仿 /dev/null 的行为,但出现了一些奇怪的错误。我学习了如何在-bash: /dev/null: Permission denied中生成类似于 /dev/null 的特殊文件。

在某个文件夹(例如 home)中时,会发生以下情况:

另一方面,当在 /dev 中时,不会发生错误:

我可以在另一台 xubuntu 机器上重现该错误,但在第三台机器上该错误不会发生。有什么线索吗?

奇怪的是,在任何这些机器上,权限和主要/次要都是相同的:

复制 /dev/null 时也一样

0 投票
1 回答
259 浏览

ruby - 重新打开STDOUT到/dev/null时指定文件模式有什么意义?

我正在阅读一个示例 ruby​​ 脚本,该脚本通过分叉创建一个守护进程,创建一个新会话,再次分叉,然后将标准输入、标准输出、标准错误重定向到 /dev/null

这是重定向的片段:

在这种情况下指定文件模式('a')有什么意义?行为是否会有所不同,例如,与

甚至

?

0 投票
1 回答
2014 浏览

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?

0 投票
1 回答
287 浏览

java - 使用 ProcessBuilder 丢弃/错误的独立于平台的方法

在 Unix 上,您可以使用以下命令丢弃进程的输出:

在 Windows 上,您需要使用NUL. 是否有比以下代码段更好的选择来支持任意平台?

这看起来很笨拙,但是ProcessBuilder.Redirect.NULL在 API 中没有可以使用的字段或看似任何其他方式来执行此操作。

我也有点担心这不能处理非 Unix-non-Windows 的情况(但我不确定这种情况是否存在)。

我知道Java 和类似问题的平台无关 /dev/null 输出接收器,但是使用无操作OutputStream仍然需要启动一个线程来主动丢弃输出 - 我更愿意让操作系统为我做.

0 投票
0 回答
47 浏览

solaris - 重定向 null 使文件不可读

我正在使用solaris 操作系统。问题是当重定向/dev/null到“越来越大的日志文件”时,它变得不可读。它也有助于将文件大小减小到零,但我无法使用less命令打开它,du错误提示它是“二进制文件,你想打开它吗?”

你知道如何解决这个问题吗?