2

我正在尝试使用以下代码在 Ubuntu 下获取我的应用程序的 Pid:

    byte[] bo = new byte[100];
    String[] cmd = { "bash", "-c", "echo $PPID" };
    Process p = Runtime.getRuntime().exec(cmd);
    p.getInputStream().read(bo);
    return Integer.parseInt(new String(bo));

但我得到了这个例外:Exception in thread "main" java.lang.NumberFormatException: For input string: "10961\n

为什么要转换为字符串会添加一个 " ?我认为 parseInt 可以处理的 \n ......是编码问题吗?

谢谢,

佩德罗

4

2 回答 2

3

\n是一个 unix 换行符。您可以在发送到 之前将其剥离parseInt()

return Integer.parseInt(new String(bo).replace("\n", ""));
于 2012-05-07T23:03:27.630 回答
2

您会收到 NumberFormat 异常,因为\n它不是数字字符。您可以剥离尾随\n

return Integer.parseInt(new String(bo).replaceAll("\\n", "");

或者一开始就echo不要添加一个:

String[] cmd = { "bash", "-c", "echo -n $PPID" };
于 2012-05-07T23:06:32.393 回答