Причины, почему селекторы на основе id не работают
Решения
$(document).ready();
.bind()
для jQuery. В старых версиях jQuery для этого было .live()
. Можно использовать подобную технику в Windows, просто необходимо использовать другие слова для тех же понятий.:) Эта статья: http://msdn.microsoft.com/en-us/library/ms682499.aspx использует канал win32 для обработки ввода-вывода от другого процесса, просто необходимо сделать то же самое с потоками в рамках того же процесса. Конечно, в Вашем случае весь вывод к stderr отовсюду в процессе будет перенаправлен Вашему потребителю.
На самом деле другие части загадки, в которой Вы, возможно, нуждаетесь, являются _fdopen и _open_osfhandle. На самом деле вот связанный пример из некоторого кода, который я выпустил несколько лет назад:
DWORD CALLBACK DoDebugThread(void *)
{
AllocConsole();
SetConsoleTitle("Copilot Debugger");
// The following is a really disgusting hack to make stdin and stdout attach
// to the newly created console using the MSVC++ libraries. I hope other
// operating systems don't need this kind of kludge.. :)
stdout->_file = _open_osfhandle((long)GetStdHandle(STD_OUTPUT_HANDLE), _O_TEXT);
stdin->_file = _open_osfhandle((long)GetStdHandle(STD_INPUT_HANDLE), _O_TEXT);
debug();
stdout->_file = -1;
stdin->_file = -1;
FreeConsole();
CPU_run();
return 0;
}
В этом случае основной процесс был процессом GUI, который не запускается с дескрипторов stdio вообще. Это открывает консоль, затем пихает правильные дескрипторы в stdout и stdin так отладка () функция (который был разработан как stdio интерактивная функция), может взаимодействовать с недавно созданной консолью. Необходимо смочь открыть некоторые каналы и сделать тот же вид вещи перенаправить stderr.
Необходимо помнить это, какие вызовы MSVCRT "дескрипторы ОС" не являются дескрипторами Win32, но другим слоем дескрипторов, добавленных только для смущения Вас. MSVCRT пытается эмулировать числа дескриптора Unix где stdin
= 0, stdout
= 1, stderr
= 2 и так далее. Дескрипторы Win32 пронумерованы по-другому, и их значения всегда, оказывается, являются кратными 4. Открытие канала и получение всех дескрипторов, настроенных правильно, потребуют грязного доставления. Используя исходный код MSVCRT и отладчик, вероятно, требование.
Вы упоминаете, что не хотите использовать именованный канал для внутреннего пользования; вероятно, стоит полагать, что документация для CreatePipe () состояния, "Неименованные каналы реализованы с помощью именованного канала с уникальным именем. Поэтому можно часто передавать дескриптор неименованному каналу к функции, которая требует дескриптора к именованному каналу". Так, я предлагаю, чтобы Вы просто записали функцию, которая создает подобный канал с корректными настройками для асинхронного чтения. Я склонен использовать GUID в качестве строки (сгенерированное использование CoCreateGUID()
и StringFromIID()
) дать мне уникальное имя и затем создать сервер и клиентские концы именованного канала с корректными настройками для перекрытого ввода-вывода (больше деталей об этом и кода, здесь: http://www.lenholgate.com/blog/2008/02/process-management-using-jobs-on-windows.html).
После того как у меня есть это, я обеспечиваю электричеством некоторый код, который я должен прочитать, файл с помощью перекрыл ввод-вывод с Портом Завершения ввода-вывода, и, ну, в общем, затем я просто получаю асинхронные уведомления о данных, когда это прибывает... Однако у меня есть изрядный объем хорошо протестированного кода библиотеки там, который заставляет все это произойти...
Вероятно, возможно настроить именованный канал и затем просто сделать перекрытое чтение с событием в Вашем OVERLAPPED
структура и проверка событие, чтобы видеть, были ли данные доступны... У меня нет кода доступным, который делает это все же.