WSActivate (C 函数)
int WSActivate(WSLINK link)
激活一个 WSTP 连接,等待另一端程序的响应.
更多信息
- WSActivate() 只能在 WSOpen 函数中的 WSOpenArgcArgv() 或 WSOpenString() 之后被调用.
- 如果还没有调用 WSActivate(),任何从链接中读取数据或写入数据的调用会自动激活链接.
- WSActivate() 如果为错误事件返回0,如果函数成功则返回非零值.
- 在已经被激活的链接上的 WSActivate() 不会做任何事.
- 如果链接的另一边还没有创建,那么,行为使用 "-linkconnect" 依赖于链接是否被创建. 如果链接已被创建,那么,WSActivate() 会等待两个链接都被连接和激活. 如果链接是一个正在连接的链接,那么,WSActivate() 会立即返回一个错误并关闭链接.
- 如果 WSActivate() 被阻止,它会调用由 WSSetYieldFunction() 设置的屈服函数.
- 如果被未被激活的链接调用,WSReady() 可用于确定链接的另一边是否被创建.
- 如果 WSActivate() 失败,使用 WSError() 检索错误代码.
- WSTP 的标头文件 wstp.h 已对 WSActivate() 作出声明.
范例
基本范例 (1)
#include "wstp.h"
/* create a link and establish the connection */
int main(int argc, char **argv)
{
WSENV env;
WSLINK link;
int error;
env = WSInitialize((char *)0);
if(env == (WSENV)0)
{ /* unable to initialize the WSTP environment */ }
/* let WSOpenArgcArgv process the command line */
link = WSOpenArgcArgv(env, argc, argv, &error);
if(link == (WSLINK)0 || error != WSEOK)
{ /* unable to create the link */ }
/* WSActivate will establish the connection */
if(!WSActivate(link))
{ /* unable to establish communication */ }
/* ... */
WSClose(link);
WSDeinitialize(env);
return 0;
}