Я пытаюсь скопировать файл с сервера Linux на локальный компьютер с Windows с помощью PSCP. Для этого добавлен код ниже.
Я столкнулся с проблемой, заключающейся в том, что ReadFile() блокируется в некоторых случаях использования. ReadFile() не возвращает результат, если размер файла /home/user/testzero.cmd равен 0 байт, но работает нормально, если в нем есть какие-либо данные. Есть идеи, почему это произойдет?
Если CloseHandle(hWritePipe); вызывается перед ReadFile()(я не хочу делать это так, как хотелось бы проверьте статус копирования/ошибку/запрашивает пароль, затем выполните WriteFile() и прочитайте еще раз), все работает нормально.
Я не смог заставить это работать в случае пустого файла .
#include
#include
#include
#include
#define BUFSIZE 4096
int main() {
// Command to execute (adjust paths and options as needed)
LPCTSTR commandLine = TEXT("D:\\tools\\pscp.exe -scp -2 user@linuxserver:'/home/user/testzero.cmd' D:\\Tools\\ProcessExplorer\\testzero.cmd");
// Initialize structures for CreateProcess parameters
STARTUPINFO si;
PROCESS_INFORMATION pi;
SECURITY_ATTRIBUTES sa;
HANDLE hReadPipe = NULL, hWritePipe = NULL;
char buffer[BUFSIZE];
DWORD bytesRead;
BOOL bSuccess;
ZeroMemory(&sa, sizeof(SECURITY_ATTRIBUTES));
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.bInheritHandle = TRUE;
sa.lpSecurityDescriptor = NULL;
// Create a pipe for the child process's stdout
if (!CreatePipe(&hReadPipe, &hWritePipe, &sa, 0)) {
std::cerr
Подробнее здесь: https://stackoverflow.com/questions/786 ... snt-return
ReadFile API Windows C++ завис, не возвращается ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение