Яблоко с открытым исходным кодом launchd
и исходный код доступен на http://opensource.apple.com/source/launchd/launchd-442.26.2/
Исходный код launchctl
находится в support/launchctl.c. Надеюсь, вы сможете найти то, что вам нужно. Я подозреваю, что вам нужно посмотреть на функцию list_cmd
примерно на две трети пути вниз по файлу.
Если ответ не в launchctl.c
, тогда я действительно не знаю, где еще это будет.
Первоначально я начал искать символы в launchctl
двоичной системе.
Функция, указанная вами, указывается в launchd/liblaunch/libbootstrap.c
.
Запуск nm /bin/launchctl
обеспечивает ряд интересных символов:
...
U _bootstrap_get_root
U _bootstrap_info
U _bootstrap_look_up_per_user
U _bootstrap_lookup_children
U _bootstrap_parent
U _bootstrap_port
...
U _launch_data_alloc
U _launch_data_array_get_count
U _launch_data_array_get_index
U _launch_data_array_set_index
U _launch_data_copy
U _launch_data_dict_insert
U _launch_data_dict_iterate
U _launch_data_dict_lookup
U _launch_data_dict_remove
U _launch_data_free
U _launch_data_get_bool
U _launch_data_get_errno
U _launch_data_get_fd
U _launch_data_get_integer
U _launch_data_get_machport
U _launch_data_get_opaque
U _launch_data_get_opaque_size
U _launch_data_get_real
U _launch_data_get_string
U _launch_data_get_type
U _launch_data_new_bool
U _launch_data_new_fd
U _launch_data_new_opaque
U _launch_data_new_string
U _launch_data_set_bool
U _launch_data_set_integer
U _launch_data_set_opaque
U _launch_data_set_real
U _launch_data_set_string
U _launch_msg
...
Эти launch_data_
функции появляются быть объявлены в launchd/launch/liblaunch.c
.
Насколько я могу сказать liblaunch
не установлен в качестве системной библиотеки и libSystem
не представляется содержать эти символы либо (только bootstrap_init
экспортируется).
Я бы предложил загрузить исходный код launchd
, скомпилировав собственный liblaunch
и посмотрев, сможете ли вы получить необходимую функциональность, связав его с вашим проектом. Я понятия не имею, будет ли это делать то, что вы хотите.
Почему вы не используете список запуска? –
Как я уже говорил в первом абзаце, я использую список launchctll изнутри fork/exec. Я хочу, чтобы избежать разблокировки любых процессов и вызова функции. – spartygw
use pthread_create() –