匿名管道如何读取ncftpput.exe输出数据

xxq123321 2012-05-25 02:07:56
ncftpput是一个ftp上传程序,上传文件时控制台不断向stderr打印文件上传字节数,剩余时间等信息,目前碰到的问题是
程序读取管道信息是移植阻塞在ReadFile那里,读取不到数据,用ping 127.0.0.1 -t测试正常

SECURITY_ATTRIBUTES sa;
HANDLE hRead,hWrite;
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.lpSecurityDescriptor = NULL;
sa.bInheritHandle = TRUE;
if (!CreatePipe(&hRead,&hWrite,&sa,0))
{
//ShowMessage("Error On CreatePipe()");
return 0;
}
STARTUPINFO si;
PROCESS_INFORMATION pi;
si.cb = sizeof(STARTUPINFO);
GetStartupInfo(&si);
si.hStdError = hWrite;
si.hStdOutput = hWrite;
si.wShowWindow = SW_HIDE;
si.hStdInput = hRead;
si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
TCHAR cmd[] = _T("ncftpput -d d:\\dbug.log -e d:\\err.log -u skyftp -p dn2jv7s9 abc-cn.com \\ d:\\software\\X16-60997V.iso");

if (!CreateProcess(NULL, cmd,NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi))
{
//::ShowMess("Error on CreateProcess()");
return 0;
}
CloseHandle(hWrite);
char buffer[4096] = {0};
DWORD bytesRead;
while (true)
{
if (ReadFile(hRead,buffer,4096,&bytesRead,NULL) == NULL) //程序移植阻塞在这里
break;
printf(buffer);
//mmo1->Lines->Add(buffer);
Sleep(200);
}
::CloseHandle(hRead);
...全文
339 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xxq123321 2012-05-30
  • 打赏
  • 举报
回复
找到原因了,原来是调用子进程的时候没有输出 fprintf(stderr, "\r%s", line);
东莞某某某 2012-05-29
  • 打赏
  • 举报
回复
看起来管道代码没问题,单独运行子进程试试,还是以那些参数运行,看看输出,如果输出正常,就说明父进程代码问题了
xxq123321 2012-05-28
  • 打赏
  • 举报
回复
popen是linux下的,我是windows
xxq123321 2012-05-28
  • 打赏
  • 举报
回复
fopen是linux下的,我是windows
hotpos 2012-05-25
  • 打赏
  • 举报
回复
试试 popen 呢
xxq123321 2012-05-25
  • 打赏
  • 举报
回复
这个是ncftpput打印上传信息的源码:

(void) sprintf(line, "%-32s ETA: %3d:%02d %6.2f/%6.2f %-2.2s %6.2f %.2s/s %.1s",
localName,
minLeft,
secLeft,
done,
uTotal,
uStr,
rate,
rStr,
stall
);

/* Print the updated information. */
(void) fprintf(stderr, "\r%s", line);
oyljerry 2012-05-25
  • 打赏
  • 举报
回复
ncftpput 是否有数据到管道.
内容概要:本文围绕基于粒子群算法(PSO)的风电与水电(抽水蓄能)联合优化调度问题展开研究,旨在通过智能优化算法实现可再生能源的高效利用与电力系统的经济稳定运行。文中系统阐述了粒子群算法的核心原理及其在电力调度中的适用性,构建了综合考虑风电出力不确定性、抽水蓄能电站调节能力及系统运行约束的联合优化调度模型。采用Matlab进行算法编程与仿真求解,验证了该方法在降低系统综合运行成本、提升新能源消纳水平、增强电网调峰调频能力等方面的优越性能。研究进一步设计了多种对比场景,分析不同调度策略下的系统表现,充分展示了所提模型在应对复杂运行条件时的鲁棒性与实用价值。; 适合人群:具备一定电力系统分析基础和Matlab编程能力的研究生、科研人员,以及从事新能源并网调度、电力系统规划与运行等相关领域的工程师; 使用场景及目标:①应用于风电场与抽水蓄能电站的协同优化调度决策支持;②为高比例可再生能源接入的电力系统提供经济可靠的低碳调度方案;③服务于高校及科研院所中关于智能优化算法在能源系统中应用的教学与科研实验; 阅读建议:建议读者结合提供的Matlab代码深入理解算法实现细节与模型构建逻辑,重点关注目标函数设计、约束条件处理及参数设置对优化结果的影响,并通过复现仿真结果来掌握粒子群算法解决复杂非线性调度问题的关键技术要点。

15,465

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧