第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

不想把命令結(jié)果導(dǎo)入臨時(shí)文件,然后讀文件...,請(qǐng)問該怎么辦?

不想把命令結(jié)果導(dǎo)入臨時(shí)文件,然后讀文件...,請(qǐng)問該怎么辦?

阿晨1998 2022-06-17 17:11:52
例如 find . -name "A.txt"這條命令,查找到a.txt后會(huì)輸出 “路徑/a.txt”。如果我在C++代碼中用system("find . -name "A.txt"")執(zhí)行了該條命令,那么如何用某個(gè)自定義的字符串取到 “路徑/a.txt” 這段字符串呢?system("find . -name "A.txt"");string strFileName = ???
查看完整描述

2 回答

?
慕沐林林

TA貢獻(xiàn)2016條經(jīng)驗(yàn) 獲得超9個(gè)贊

在windows下面這個(gè)的確是需要用管道來實(shí)現(xiàn)的

VC6參考代碼:

#include <windows.h>

#include <stdio.h>

BOOL ExcudeCmd(char *szOutPutBuf,char *szCmdLine)

{

SECURITY_ATTRIBUTES sa; 

HANDLE hRead,hWrite;


sa.nLength = sizeof(SECURITY_ATTRIBUTES); 

sa.lpSecurityDescriptor = NULL; 

sa.bInheritHandle = TRUE; //輸出重定向

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

printf("創(chuàng)建匿名管道失敗");

return FALSE; 

STARTUPINFO si; 

PROCESS_INFORMATION pi; 

ZeroMemory(&si,sizeof(STARTUPINFO));

si.cb = sizeof(STARTUPINFO); 

si.hStdInput=hRead;

si.hStdError = GetStdHandle(STD_ERROR_HANDLE);            //把創(chuàng)建進(jìn)程的標(biāo)準(zhǔn)錯(cuò)誤輸出重定向到管道輸入 

si.hStdOutput = hWrite;           //把創(chuàng)建進(jìn)程的標(biāo)準(zhǔn)輸出重定向到管道輸入 

si.wShowWindow = SW_HIDE;

si.dwFlags =STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW; 

if (!CreateProcess(NULL, szCmdLine,NULL,NULL,TRUE,0,NULL,NULL,&si,&pi)) 

CloseHandle(hWrite); 

CloseHandle(hRead); 

printf("創(chuàng)建子進(jìn)程失敗"); 

return FALSE; 

else

{

CloseHandle(pi.hProcess);

CloseHandle(pi.hThread);

}

DWORD bytesRead; 


if (!ReadFile(hRead,szOutPutBuf,1000,&bytesRead,NULL)) 

{

printf("讀數(shù)據(jù)失敗"); 

return FALSE;

}

CloseHandle(hRead); 

return TRUE;

}


int main()

{

char cmdline[]="cmd.exe /c echo 回顯的信息",buf[1000];

ZeroMemory(buf,100);

ExcudeCmd(buf,cmdline);

printf(buf);//buf就是你想要的東西

}

Linux下面就不清楚了



查看完整回答
反對(duì) 回復(fù) 2022-06-20
?
守著一只汪

TA貢獻(xiàn)1872條經(jīng)驗(yàn) 獲得超4個(gè)贊

您可以試下類似的代碼,popen 函數(shù)在 vc6 中對(duì)應(yīng)的應(yīng)該是 _popen ,pclose 為 _pclose

或者百度 “c++ 獲取 system 的輸出” 您可以得到很多類似的問題的解決方案。


#include <stdio.h>#include <string> void executeCMD(const char *cmd, char *result){    char buf_ps[1024];    char ps[1024]={0};    FILE *ptr;    strcpy(ps, cmd);    if((ptr=popen(ps, "r"))!=NULL)    {        while(fgets(buf_ps, 1024, ptr)!=NULL)        {           strcat(result, buf_ps);           if(strlen(result)>1024)               break;        }        pclose(ptr);        ptr = NULL;    }    else    {        printf("popen %s error\n", ps);    }} int main(){        char result[1024];        executeCMD("find . -name \"A.txt\"", result);        printf("%s", result );        return 0;}

 


查看完整回答
反對(duì) 回復(fù) 2022-06-20
  • 2 回答
  • 0 關(guān)注
  • 167 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)