Linux: получение umask уже рабочего процесса?

Следующее работает с Java 7/8, защищенными URL-адресами и показывает, как добавить cookie к вашему запросу. Обратите внимание, что это в основном прямая копия этого другого замечательного ответа на этой странице , но добавлен пример файла cookie и пояснения в том, что он также работает с защищенными URL-адресами ;-)

Если вам необходимо подключиться к серверу с недопустимым сертификатом или самоподписанным сертификатом, это приведет к появлению ошибок безопасности, если вы не импортируете сертификат. Если вам нужна эта функциональность, вы можете рассмотреть подход, подробно описанный в этом ответе к этому связанному с вопросу о StackOverflow.

Пример

String result = getUrlAsString("https://www.google.com");
System.out.println(result);

выходы

Код

import java.net.URL;
import java.net.URLConnection;
import java.io.BufferedReader;
import java.io.InputStreamReader;

public static String getUrlAsString(String url)
{
    try
    {
        URL urlObj = new URL(url);
        URLConnection con = urlObj.openConnection();

        con.setDoOutput(true); // we want the response 
        con.setRequestProperty("Cookie", "myCookie=test123");
        con.connect();

        BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));

        StringBuilder response = new StringBuilder();
        String inputLine;

        String newLine = System.getProperty("line.separator");
        while ((inputLine = in.readLine()) != null)
        {
            response.append(inputLine + newLine);
        }

        in.close();

        return response.toString();
    }
    catch (Exception e)
    {
        throw new RuntimeException(e);
    }
}

25
задан Mark Harrison 9 May 2016 в 06:09
поделиться

3 ответа

Можно присоединить gdb к рабочему процессу и затем назвать umask в отладчике:

(gdb) call umask(0)
[Switching to Thread -1217489200 (LWP 11037)]
$1 = 18
(gdb) call umask(18)
$2 = 0
(gdb) 

(примечание: 18 = O22)

Это предполагает, что может быть действительно ужасный способ получить umask, использующий ptrace.

25
ответ дан Mark Harrison 28 November 2019 в 21:19
поделиться

Если Вы - текущий процесс, можно записать файл в/tmp и проверить его установку. Лучшее решение состоит в том, чтобы назвать umask (3) передающий нуль - функция возвращает установку до вызова - и затем сбросила его назад путем пасования назад того значения в umask.

umask для другого процесса, кажется, не представлен.

1
ответ дан Josh 28 November 2019 в 21:19
поделиться

От GNU C руководство Библиотеки:

Вот пример, показывающий, как считать маску с umask, не изменяя его постоянно:

mode_t
read_umask (void)
{
  mode_t mask = umask (0);
  umask (mask);
  return mask;
}

Однако лучше использовать getumask, если Вы просто хотите считать значение маски, потому что это повторно используемо (по крайней мере, при использовании операционной системы GNU).

getumask glibc-конкретно, все же. Таким образом, при оценке мобильности тогда неповторно используемым решением является единственное существует.

Редактирование: я только что держал для ->umask на всем протяжении исходного кода Linux. Нигде нет, который получит Вас umask различного процесса. Кроме того, нет никакого getumask; по-видимому, это - Hurd-единственная вещь.

9
ответ дан Chris Jester-Young 28 November 2019 в 21:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: