Да, вы можете создать конструктор виртуальной копии, но вы не можете создать виртуальный конструктор.
Причина:
Виртуальный конструктор: - Не возможно, потому что c ++ является языком статического типа и создает конструктор как виртуальный, поэтому компилятор не сможет решить, какой тип объекта он и оставить весь процесс за время выполнения из-за виртуального ключевого слова. Компилятор должен знать тип класса для создания объекта. Другими словами, какой тип объекта должен быть создан, это решение времени компиляции с точки зрения компилятора C ++. Если мы сделаем конструктор виртуальным, компилятор отметит ошибку.
Конструктор виртуальной копии: - Да Возможно, рассмотрите приложение для клип-карты. Плата клипов может содержать объекты разных типов и копировать объекты из существующих объектов, вставлять их на холст приложения. Опять же, какой тип объекта, который нужно скопировать, является решением во время выполнения. Конструктор виртуальной копии заполняет пробел здесь.
Обычно файл по умолчанию действительно /etc/supervisor.conf
, но дистрибутив Debian исправляет этот (ссылка на патч gzipped, предоставленный Debian), чтобы сначала искать /etc/supervisor/supervisor.conf
:
--- supervisor-3.0a8.orig/src/supervisor/options.py
+++ supervisor-3.0a8/src/supervisor/options.py
@@ -105,7 +105,7 @@
def default_configfile(self):
"""Return the name of the found config file or raise. """
paths = ['supervisord.conf', 'etc/supervisord.conf',
- '/etc/supervisord.conf']
+ '/etc/supervisor/supervisord.conf', '/etc/supervisord.conf']
config = None
for path in paths:
if os.path.exists(path):
Таким образом, с этим патчем супервизор ищет supervisord.conf
в локальном каталоге, в подкаталоге etc/
, затем в глобальных каталогах /etc/supervisor/
и /etc/
.
Файл supervisord.conf
по умолчанию, установленный Debian, имеет это в конце:
[include]
files = /etc/supervisor/conf.d/*.conf
, заставляя supervisord загружать любые дополнительные файлы, помещенные в каталог conf.d
.
Возможно, вы установили супервизор через pip и, следовательно, имеете непатченную версию в
/usr/local/lib/python2.7/dist-packages/supervisor/
с преимуществом над пропатченной версией в
/usr/lib/pymodules/python2.7/supervisor
См. Ответ Мартжина о деталях патча. Простое решение:
pip uninstall supervisor
Затем повторно запустите установку пакета, если он был установлен только частично:
apt-get install supervisor
Также убедитесь, что ваш /etc/supervisor/supervisord.conf
присутствует. Если нет, вам, возможно, придется вручную воссоздать его, мой выглядит так:
; supervisor config file
[unix_http_server]
file=/var/run//supervisor.sock ; (the path to the socket file)
chmod=0700 ; sockef file mode (default 0700)
[supervisord]
logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log)
pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
childlogdir=/var/log/supervisor ; ('AUTO' child log dir, default $TEMP)
; the below section must remain in the config file for RPC
; (supervisorctl/web interface) to work, additional interfaces may be
; added by defining them in separate rpcinterface: sections
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisorctl]
serverurl=unix:///var/run//supervisor.sock ; use a unix:// URL for a unix socket
; The [include] section can just contain the "files" setting. This
; setting can list multiple files (separated by whitespace or
; newlines). It can also contain wildcards. The filenames are
; interpreted as relative to this file. Included files *cannot*
; include files themselves.
[include]
files = /etc/supervisor/conf.d/*.conf