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;
}