日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

php+管道+pipe管道,C++ 匿名管道执行DOS命令

發布時間:2023/11/27 生活经验 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php+管道+pipe管道,C++ 匿名管道执行DOS命令 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近在開發一個項目。需要PHP Sock連接到服務器中執行DOS 命令 , 所以想到了命名管道 CreatePipe 其函數原型BOOL CreatePipe(

PHANDLE hReadPipe, ? ? ? ? ? ? ? ? ? ? ? // 指定一個變量,設為管道讀入(輸出)端的一個句柄

PHANDLE hWritePipe, ? ? ? ? ? ? ? ? ? ? ?// 指定一個變量,設為管道寫入(輸入)端的一個句柄

LPSECURITY_ATTRIBUTES lpPipeAttributes, ?// 安全屬性

DWORD nSize ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?// 管道尺寸

);

該CreatePipe函數創建一個匿名管道,并返回句柄的讀取和寫入管道的末端。SECURITY_ATTRIBUTES sa;

HANDLE hRead,hWrite;

sa.nLength = sizeof(SECURITY_ATTRIBUTES);

sa.lpSecurityDescriptor = NULL;

sa.bInheritHandle = TRUE;

string str= "cmd /k net user"; ?//命令行

if (!CreatePipe(&hRead,&hWrite,&sa,0)) {

//MessageBox("Error On CreatePipe()");

return FALSE;

}

STARTUPINFO si;

PROCESS_INFORMATION pi;

si.cb = sizeof(STARTUPINFO);

GetStartupInfo(&si);

si.hStdError = hWrite;//數據輸出用的文件句柄

si.hStdOutput = hWrite;//數據輸出用的文件句柄

si.wShowWindow = SW_HIDE;

si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;

OutputDebugString("1");

if (!CreateProcess(NULL,(char*)str.c_str()//執行cmd命令,并在命名中管道中寫入cmd命令返回的串

,NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi)) {

//MessageBox("Error on CreateProcess()");

return FALSE;

}

CloseHandle(hWrite);

//OutputDebugString("2");

char buffer[4096] ={0} ;

DWORD bytesRead;

string strResult="";

while(1)

{

memset(buffer,0,4096);

if(ReadFile(hRead,buffer,4096,&bytesRead,NULL) != NULL)//從命名管道中讀取數據

{

strResult += buffer;

cout << strResult;

OutputDebugString(buffer);

}

else

{

break;

}

}

CloseHandle(hRead);

總結

以上是生活随笔為你收集整理的php+管道+pipe管道,C++ 匿名管道执行DOS命令的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。