10

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

谢谢。

4

2 回答 2

7

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

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

对于单线程应用程序,流程如下所示: 1. 从标准输入读取请求 2. 处理请求 3. 向标准输出写入响应;只要您可以从标准输入中读取,就重复 1-3;如果您无法从标准输入读取,请中断循环并退出。

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

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

于 2014-01-23T16:42:46.080 回答
0

基于bkdc的回答;

如果您使用的是 C 库函数 - getchar (),这应该可以;

unsigned int c = getchar();
if (c == 0xFFFFFFFF){//this means native app finished its work
        return 0;
}
于 2015-09-07T08:50:20.713 回答