1. C++ / Говнокод #10541

    −28

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    command = QString("sh -c \"echo \"nameserver %1\" > /etc/resolv.conf\"")
                  .arg(nameserver.toString());
    
    QProcess process;
    process.start(command);

    Запостил: Zielscheibe, 04 Июня 2012

    Комментарии (8) RSS

    • Ну может быть он потом это отрефакторит, вынеся команду в конфиг?
      Ответить
    • Тут надо бы вспомнить про networkmanager, но не понятно будет ли он на целевой системе.
      Ответить
    • Хм... Ну я бы использовал QFile::open, например. Не ?
      Ответить
      • Ну может быть, он вынесет команду в конфиг. И пользователь сможет прописывать туда другую команду, которая, допустим, меняет настройки dns через networkmanager или еще каким-то способом.
        Ответить
      • И кстати, запись в /etc/resolv.conf как правило не доступна обычному пользователю. Поэтому QFile::open тут, к сожалению, не применим (ну разве что автор пишет демона, крутящегося под рутом или на время тестирования дал себе право на запись).
        Ответить
        • sh -c 'echo', тоже таких прав не дает.
          Ответить
          • Ну допустим он дал себе права на запись (на время отладки), а потом заменит эту команду нормальной - передачей команды networkmanager'у или например kdesu/gsudo с тем самым эхом.
            Ответить
    • показать все, что скрытоВсем минусы! Всем добра!
      Ответить

    Добавить комментарий