У моего проекта две программы: Родитель и ребенок.Проходное гнездо для дочернего процесса
В Родительском соединении: есть одно соединение ожидания подключения от клиента. Когда Parent принимает соединение, он генерирует дочерний процесс и передает сокет Child.
SOCKET newSock = accept(listenSock, 0, 0);
char cmd[1024];
sprintf(cmd, "%s %d", "Child.exe", newSock);
result = CreateProcess(NULL, cmd, NULL, NULL, TRUE, CREATE_NEW_CONSOLE, NULL, NULL, &startupInfo, &processInformation);
Успешно передаются данные о передаче данных между клиентом и ребенком.
Но когда я просматриваю Google, и некоторые люди писали, что: необходимо вызвать функцию WSADuplicateSocket(), после этого передать сокет дочернему процессу.
Просьба помочь мне показать разные между двумя способами? Если я не вызываю WSADuplicateSocket(), есть ли у моей программы какая-либо ошибка или нет?
'Sprintf()' опасно, так как это может привести к переполнению буфера с ненадежными данными , Вместо этого вы должны использовать '_snprintf_s' (или' snprintf' в системах, отличных от Windows). –