Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 未加入屏幕的Gnu屏幕硬拷贝_Macos_Bash_Gnu Screen - Fatal编程技术网

Macos 未加入屏幕的Gnu屏幕硬拷贝

Macos 未加入屏幕的Gnu屏幕硬拷贝,macos,bash,gnu-screen,Macos,Bash,Gnu Screen,我正在编写一个python应用程序,它在gnu屏幕上运行一些命令,而不加入屏幕并查看硬拷贝缓冲区。特别是,我正在运行: screen -dmS test screen -S test -p 0 -X stuff "ls$(printf \\r)" screen -S test -X hardcopy screenOutput.txt 当我查看screenOutput.txt时,我什么也看不到 但是,如果我加入屏幕,然后运行硬拷贝 screen -dmS test screen -S test

我正在编写一个python应用程序,它在gnu屏幕上运行一些命令,而不加入屏幕并查看硬拷贝缓冲区。特别是,我正在运行:

screen -dmS test
screen -S test -p 0 -X stuff "ls$(printf \\r)"
screen -S test -X hardcopy screenOutput.txt
当我查看screenOutput.txt时,我什么也看不到

但是,如果我加入屏幕,然后运行硬拷贝

screen -dmS test
screen -S test -p 0 -X stuff "ls$(printf \\r)"
screen -r test
(quit the screen with c-A c-D)
screen -S test -X hardcopy screenOutput.txt
然后我在screenOutput.txt中看到了输出

有没有一种方法可以让硬拷贝在不加入屏幕的情况下写入文件?

有关如何向会话发送命令的示例,请参阅。一个正确的调用是:

screen -dmS test
screen -S test -X hardcopy screenOutput.txt
即,
-X
应为第一个命令选项
-d
/
-r
切换到只搜索附加/分离会话必须遵循它(文档在这一点上非常模糊);在这种情况下,根本不需要它们

我在
屏幕
v4.0.3
中确认此操作不起作用(生成空白文件),并在相同的环境下在
v4.2.0
及更高版本中工作

广泛调查:

调试表明根本原因是
WriteFile
at
fileio.c:472
如果(!fore)中断
退出函数而不写入任何内容,因为
fore
(指向前台窗口的指针)实际上是
NULL
。 我无法精确地指出修复了该问题的具体提交位置,但在
v4.2.0
中检查了它是否为
NULL
。该变量在代码库周围的许多位置设置,并在大致相同的位置重置为
NULL
,通常在赋值后的代码中。因此,解决问题的机会非常渺茫


我在此重申,在
屏幕中
v4.0.3
硬拷贝
已损坏,您必须升级(例如,将一个版本安装到
/usr/local
,使其覆盖库存版本)。

相关:这适用于版本4.03.01,您知道如何使其适用于4.00.03吗?查看git日志,因此,它很可能在
4.00.03
中被破坏。您可能希望逐步检查源代码,以检查它是否写入了虚假数据或只是采用了错误的路径。如果我运行前两个命令(但将-r改为-S),我仍然无法在screenOutput.txt文件中获得任何内容。@user1763510 WFM,答案中包含代码<代码>屏幕v4.03.01奇怪,我在OSX 10.10.5上。你在linux上吗?看起来没什么区别<代码>屏幕版本4.00.03刚刚在Linux上试用了
屏幕版本4.00.03(FAU)2006年10月23日
,仍然不起作用。