首页 > 解决方案 > 使用 p4api 获取 Perforce 命令运行的输出

问题描述

我正在使用 Perforce(又名 Helix Core、C++ API)以编程方式运行 Perforce 命令。到目前为止,我发现的所有示例都很简短,并展示了如何建立与服务器的连接并运行命令。但是……然后呢?如何访问该命令的输出?

一个简单的例子:

#include <p4/clientapi.h>

// Connect to server.
ClientApi client;
client.SetProtocol( "tag", "" );
client.Init( &e );
if ( e.Test() )
{
  e.Fmt( &msg );
  fprintf( stderr, "%s\n", msg.Text() );
  return;
}

// Run the command.
ClientUser cu;
client.Run( "info", &cu );

// Access the output.
ummm... ?

(这个问题值得一个“p4api”标签。但是,我没有足够的声誉来创建一个新标签。)

标签: c++perforce

解决方案


ClientUser对象接收输出。如果您从命令行运行此代码,您将看到该方法p4 info正在打印输出OutputInfo()

如果您想对输出做一些不同的事情,请子类化ClientUser并实现做其他事情的输出方法。

https://www.perforce.com/manuals/v15.1/p4api/chapter.methods.html#clientuser.outputinfo

在 Perforce Workshop 中有很多这样的例子。 https://swarm.workshop.perforce.com/files/guest/sam_stafford/deepannotate/DAUserFilelog.cpp


推荐阅读