Вы получите тот же результат, если выполните ту же команду из командной строки:
$ "/bin/sh" "-c" "ulimit" "-n"
unlimited
Это потому, что -c
просматривает только тот аргумент, который следует сразу за ним, то есть ulimit
.-n
не является частью этого аргумента и вместо этого назначается в качестве позиционного параметра ($0
).
Для запуска ulimit -n
-n
должен быть частью этого аргумента:
$ "/bin/sh" "-c" "ulimit -n"
1024
Другими словами, вы должны использовать:
new String[]{"/bin/sh", "-c", "ulimit -n"}