JNIEXPORT jobjectArray SIGAR_JNIx(getProcArgs) (JNIEnv *env, jobject sigar_obj, jlong pid) { int status; unsigned int i; sigar_proc_args_t procargs; jobjectArray argsarray; jclass stringclass = JENV->FindClass(env, "java/lang/String"); dSIGAR(NULL); if ((status = sigar_proc_args_get(sigar, pid, &procargs)) != SIGAR_OK) { sigar_throw_error(env, jsigar, status); return NULL; } argsarray = JENV->NewObjectArray(env, procargs.number, stringclass, 0); SIGAR_CHEX; for (i=0; i<procargs.number; i++) { jstring s = getProcArgStr(procargs.data[i], env); JENV->SetObjectArrayElement(env, argsarray, i, s); SIGAR_CHEX; } sigar_proc_args_destroy(sigar, &procargs); return argsarray; }
static VALUE rb_sigar_proc_args(VALUE obj, VALUE pid) { int status; sigar_t *sigar = rb_sigar_get(obj); sigar_proc_args_t args; VALUE RETVAL; status = sigar_proc_args_get(sigar, OBJ2PID(pid), &args); if (status != SIGAR_OK) { RB_SIGAR_CROAK; } RETVAL = rb_sigar_new_strlist(args.data, args.number); sigar_proc_args_destroy(sigar, &args); return RETVAL; }