Sorry to hijack, but that didn't work for me. I'm trying a command-line utility, doing:
static size_t
get_thread_count(pid_t pid)
{
mach_port_t me = mach_task_self();
mach_port_t task;
kern_return_t res;
thread_array_t threads;
mach_msg_type_number_t n_threads;
res = task_for_pid(me, pid, &task);
if (res != KERN_SUCCESS) {
fprintf(stderr, "Unable to get task for pid %d: %d\n", pid, res);
return 0;
}
res = task_threads(task, &threads, &n_threads);
if (res != KERN_SUCCESS) {
fprintf(stderr, "Could not get threads: %d\n", res);
return 0;
}
res = vm_deallocate(me, (vm_address_t)threads, n_threads * sizeof(*threads));
// Ignore error
return n_threads;
}```
and using an entitlements plist of
and using codesign --sign - --entitlements ./ent.plist --deep ./t3 --force to get it in there, but it fails with error 5. (Even when run as root. 😄)
This could be how I'm codesigning it, of course; I was just doing a simple CLI tool test first.