screen 退出后继续运行_screen实现关闭ssh之后继续运行代码

本文基于Ubuntu 14。04

使用SSH连接远程服务器,启动服务,退出SSH后,服务也就终止了,使用Screen可以解决这个问题。

1、安装Screen

apt-get install screen

2、安装完成后,输入screen命令,根据提示按空格进入新的界面

3、像之前启动Meteor项目一样,进入目录,启动Meteor项目

cd /home/meteor/hello

meteor

4、启动完成后访问项目 http://ip:3000,成功。关闭ssh窗口,继续访问,仍然成功。

5、再次进入ssh,查看已经打开的服务

screen -ls

执行后会列出正在运行的子界面,查看服务运行的子界面

screen -ls 子界面代号,进入运行子界面的控制台

657b8248086ea1ce571b917c932293d0.png

6、也会遇到进入子界面失败的情况,提示如下错误

There is no screen to be resumed matching 6556

7、输入命令回复

screen -d 6556

8、再次进入子界面,因为目前只有一个子界面,可以直接输入screen -r 进入

9、进入子界面后,回到主界面的命令是 ctrl+a,d  即先输入ctrl+a再输入d

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`screen_get_window_property_pv()` 函数是 QNX Screen API 中的函数,用于获取屏幕窗口的属性值。以下是该函数的源码实现(参考自 QNX 官方文档): ```c int screen_get_window_property_pv(screen_window_t window, int name, void **value) { int rc; int count; int size; rc = screen_get_window_property_iv(window, name, &count); if (rc || !count) { return rc ? rc : (count ? EINVAL : ENOENT); } switch (name) { case SCREEN_PROPERTY_RENDER_BUFFERS: case SCREEN_PROPERTY_STREAM_SRC: case SCREEN_PROPERTY_STREAM_DST: case SCREEN_PROPERTY_CLIPBOARD: case SCREEN_PROPERTY_ZORDER: case SCREEN_PROPERTY_TRANSPARENCY: case SCREEN_PROPERTY_USAGE: case SCREEN_PROPERTY_COLOR: case SCREEN_PROPERTY_COLOR_SPACE: case SCREEN_PROPERTY_COMPOSITION_MODE: case SCREEN_PROPERTY_FORMAT: case SCREEN_PROPERTY_FLIP: case SCREEN_PROPERTY_GLOBAL_ALPHA: case SCREEN_PROPERTY_SCALE_QUALITY: case SCREEN_PROPERTY_MIRROR: case SCREEN_PROPERTY_PROTECTION_ENABLE: case SCREEN_PROPERTY_PROTECTION_REGIONS: case SCREEN_PROPERTY_PROPERTY: case SCREEN_PROPERTY_WINDOW: case SCREEN_PROPERTY_DISPLAY: case SCREEN_PROPERTY_DEVICE: case SCREEN_PROPERTY_CONTEXT: case SCREEN_PROPERTY_GROUP: size = sizeof(screen_handle_t); break; case SCREEN_PROPERTY_ID_STRING: size = SCREEN_ID_STRING_SIZE; break; case SCREEN_PROPERTY_BUFFER_SIZE: case SCREEN_PROPERTY_PHYSICAL_SIZE: case SCREEN_PROPERTY_SOURCE_SIZE: case SCREEN_PROPERTY_RENDER_BUFFER_COUNT: case SCREEN_PROPERTY_UPDATE_SIZE: case SCREEN_PROPERTY_SIZE: case SCREEN_PROPERTY_POSITION: case SCREEN_PROPERTY_SOURCE_POSITION: case SCREEN_PROPERTY_CLIP_POSITION: case SCREEN_PROPERTY_CLIP_SIZE: size = sizeof(int[2]); break; case SCREEN_PROPERTY_SOURCE_CLIP_POSITION: case SCREEN_PROPERTY_SOURCE_CLIP_SIZE: size = sizeof(int[4]); break; case SCREEN_PROPERTY_STRIDE: case SCREEN_PROPERTY_BUFFER_COUNT: case SCREEN_PROPERTY_USAGE_HINTS: case SCREEN_PROPERTY_ALPHA_MODE: case SCREEN_PROPERTY_SWAP_INTERVAL: case SCREEN_PROPERTY_IDLE_MODE: case SCREEN_PROPERTY_IDLE_STATE: size = sizeof(int); break; case SCREEN_PROPERTY_FORMAT_COUNT: rc = screen_get_window_property_iv(window, SCREEN_PROPERTY_FORMAT_COUNT, &count); size = count * sizeof(int); break; case SCREEN_PROPERTY_BLEND_GLOBAL_ALPHA: size = sizeof(screen_blending_t); break; default: return EINVAL; } *value = calloc(count, size); if (!*value) { return ENOMEM; } rc = screen_get_window_property_iv(window, name, *value); if (rc) { free(*value); *value = NULL; return rc; } return 0; } ``` 该函数首先调用 `screen_get_window_property_iv()` 函数获取指定属性的值,并检查返回值和属性值的数量。如果返回值为 0 且属性值数量为非零,则继续处理。否则,返回相应的错误码。 然后,根据不同的属性类型和名称,设置不同的属性值大小,并调用 `calloc()` 函数分配内存空间。接着,再次调用 `screen_get_window_property_iv()` 函数获取属性值,并将其存储在分配的内存空间中。 最后,返回 0 表示操作成功,返回其他值则表示出现错误。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值