Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Системное программирование и WinAPI > Проблема с Ctrl-c |
Автор: jecl 28.1.2010, 20:51 | ||
Всем привет. Есть проект xCmd - выполнение команд на удаленной вин машине. http://www.google.com/codesearch/p?hl=ru#sSLuyk11fLo/archives/fulldisclosure/2004-05/att-0329/xCmd.zip|WobokFQzdp8/xCmd/xCmd.h&q=xcmd Как работает При запуске xCmd происходит логин на удаленную машину с поднятием xCmdSvc - сервиса, который и будет выполнять команды. Т.е. при выполнении xCmd \\localhost cmd На удаленной машине запускается cmd.exe, весь отпут форвардится к нам, весь инпут - на удаленную машину. Реализовано с помощью пайпов. Т.е. xCmdSvc открывает три пайпа на err, in, out(создается процесс с этими пайпами, тот самый cmd.exe). xCmd коннектится к пайпам и непосредственно общается с процессом запущенным xCmdSvc. Все неплохо, есть одно но. При отправке ctrlc на in pipe ничего не происходит. текущая команда выполняемая в cmd(ping localhost к примеру) не прерывается. Если же отослать ctrlc ничего не делающему cmd, а затем нажать enter выводится символ сердечка:( Решил сделать эксперимент в виде такого кода:
Так вот при нажатии ctrlс ничего не происходит(кроме вывода сердечек). Почему? |
Автор: jonie 29.1.2010, 12:38 | ||
Ctrl+C не генерирует 3, т.е. может оно так и приходит куда-то там, но помимо 3-ки есть и еще вещи, которые делает Ctrl+C .... |
Автор: jecl 29.1.2010, 13:00 | ||
Никакой магии ctrl-C, он же ETX = 03 http://nemesis.lonestar.org/reference/telecom/codes/ascii.html
Тогда вопрос в том что помимо отсылки тройки надо еще сделать? Т.е. изначальная задача по имеющемуся пайпу (пайп представляет собой стдИн)передать Ctrl-C. Данный пример упрощение, но для начала хотелось бы добиться что бы он работал. |