Chrome关闭时Chrome Native Messaging未关闭

时间:2014-01-13 08:42:52

标签: google-chrome chrome-native-messaging

我已经制作了chrome主机,用于在我的扩展程序和我的进程之间传递本机消息,我的进程在chrome启动时启动但在关闭chrome时没有关闭,我应该在主机的清单中添加参数还是应该添加我的进程处理以关闭铬合金时关闭过程?

感谢。

2 个答案:

答案 0 :(得分:7)

您没有提供很多细节,但我可以回答您的一些问题: - 无需在清单中添加“参数”;没有这样的参数 - 无需在您的流程中检测Chrome关闭时间

Chrome会在您向其发送消息时启动您的本机消息传递主机,或者,如果您使用长期连接,则在您打开连接时启动。当STDIN流关闭时应用程序应该关闭(简单地说,你不能再从stdin中读取)。

对于单线程应用,流程如下所示: 1.从标准输入读取请求 2.处理请求 3.写入对stdout的回应; 只要你能从stdin中读取,就重复1-3次;如果你无法从stdin读取,请打破循环并退出。

    std::string req;
while(!(req=read_request()).empty())
{
       //process request and send response
}

read_request取决于您实现:请求的前4个BYTES包含消息长度,因此首先读取4个然后读取包含实际JSON请求的len个字节。如果您无法读取任何内容(空),则while循环将中断并退出应用程序。

答案 1 :(得分:0)

bkdc的答案为基础;

如果你正在使用C库函数 - getchar(),这应该可行;

unsigned int c = getchar();
if (c == 0xFFFFFFFF){//this means native app finished its work
        return 0;
}