ПРАВОВАЯ ОГОВОРКА: Я не программист на C++, однако я знаю C действительно хорошо. Я adapated, который кодируют эти вызовы от некоторого C, я имею.
Также скидка с цены поместила эти странные _ как мои подчеркивания.
необходимо просто быть в состоянии записать класс абстракции вокруг сокетов C с чем-то вроде этого:
class my_sock {
private int sock;
private int socket_type;
private socklen_t sock_len;
private struct sockaddr_in server_addr;
public char *server_ip;
public unsigned short server_port;
};
Тогда имеют методы для открытия, закрытия и отправки пакетов вниз сокет.
, Например, прослушивание могло бы выглядеть примерно так:
int my_socket_connect()
{
int return_code = 0;
if ( this->socket_type != CLIENT_SOCK ) {
cout << "This is a not a client socket!\n";
return -1;
}
return_code = connect( this->local_sock, (struct sockaddr *) &this->server_addr, sizeof(this->server_addr));
if( return_code < 0 ) {
cout << "Connect() failure! %s\n", strerror(errno);
return return_code;
}
return return_code;
}
Создайте программу запуска, которая будет ждать какого-либо сигнала (не обязательно буквального сигнала, просто индикации того, что он готов), а затем exec () вашей цели. Теперь dtrace -p программа запуска, и как только dtrace будет запущена, отпустите программу запуска.
Если другой ответ вам не подходит, можете ли вы запустить программу в gdb, прервать main (или даже раньше), получить pid и запустить скрипт? Я пробовал это в прошлом, и, похоже, это сработало.
Что-то вроде sudo dtruss -f sudo -u
сработало для меня, но потом мне стало не по себе.
Я сообщил об этом в радаре и получил он закрыт как дубликат № 5108629.