I run code on linux ubuntu 17.10
public class TestExec {
public static void main(String[] args) {
try {
Process p = Runtime.getRuntime().exec(new String[]{"/bin/sh", "-c", "ulimit", "-n"});
BufferedReader in = new BufferedReader(
new InputStreamReader(p.getInputStream()));
String line = null;
while ((line = in.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
this code returns "unlimited"
but whenever I run command from terminal I get 1024.
Why those numbers are different?
You get the same result if you run the same command from the command line:
This is because
-c
only looks at the argument immediately following it, which isulimit
. The-n
is not part of this argument, and is instead instead assigned as a positional parameter ($0
).To run
ulimit -n
, the-n
needs to be part of that argument:In other words, you should be using: