将 ctrl-c 发送到特定屏幕会话

问题描述 投票:0回答:1

我正在设计一个脚本来在命名屏幕会话中启动一个进程。

as_user "screen -p 0 -S **$command** -X eval 'stuff \"wine LFS.exe /cfg=**$command**.cfg\"\015'"

因此

bash myscript.sh start test
将创建一个名为 test 的屏幕并使用软件运行
test.cfg

现在我希望我的脚本访问特定的屏幕会话并执行 CTRL+C 来停止正在运行的进程,以便我可以终止屏幕会话。

类似这样的:

as_user "screen -p 0 -S **$command** **... kill the process with ctrl-c...**"
as_user "screen -p 0 -S **$command** -X eval 'stuff \"exit\"\015'"
shell gnu-screen sigint
1个回答
28
投票

我不太明白你的意思,但要在屏幕会话中将

ctrl-c
发送到 window

screen -S session_name -X at window_number stuff $'\003'
# or
screen -S session_name -X -p window_number stuff $'\003'

如果您想向所有窗口发送内容,请使用

#
(需要引用)作为window_number

更新:

Screen 的

stuff
命令还支持使用
^X
(或
^x
)来表示
CTRL-X
,因此以下命令也可以用于发送
CTRL-C

# Here '^C' is two chars, '^' and 'C'
screen -S session_name -X at window_number stuff '^C'
© www.soinside.com 2019 - 2024. All rights reserved.