/** stopMongoProgram(port[, signal]) */
 BSONObj StopMongoProgram( const BSONObj &a, void* data ) {
     verify( a.nFields() >= 1 || a.nFields() <= 3 );
     uassert( 15853 , "stopMongo needs a number" , a.firstElement().isNumber() );
     int port = int( a.firstElement().number() );
     int code = killDb( port, 0, getSignal( a ), getStopMongodOpts( a ));
     log() << "shell: stopped mongo program on port " << port << endl;
     return BSON( "" << (double)code );
 }
/** stopMongoProgram(port[, signal]) */
BSONObj StopMongoProgram(const BSONObj& a, void* data) {
    int nFields = a.nFields();
    verify(nFields >= 1 && nFields <= 3);
    uassert(15853, "stopMongo needs a number", a.firstElement().isNumber());
    int port = int(a.firstElement().number());
    int code = killDb(port, ProcessId::fromNative(0), getSignal(a), getStopMongodOpts(a));
    log() << "shell: stopped mongol program on port " << port << endl;
    return BSON("" << (double)code);
}
/** stopMongoProgram(port[, signal]) */
BSONObj StopMongoProgram(const BSONObj& a, void* data) {
    int nFields = a.nFields();
    uassert(ErrorCodes::FailedToParse, "wrong number of arguments", nFields >= 1 && nFields <= 3);
    uassert(ErrorCodes::BadValue, "stopMongoProgram needs a number", a.firstElement().isNumber());
    int port = int(a.firstElement().number());
    int code = killDb(port, ProcessId::fromNative(0), getSignal(a), getStopMongodOpts(a));
    log() << "shell: stopped mongo program on port " << port;
    return BSON("" << (double)code);
}