簡體   English   中英

c語言如何從popen()函數中讀取stdout並將其存儲在char數組中?

[英]How to read the stdout from the popen() function and store it in the char array in C language?

好吧,我陷入了將 stdout 輸出發送到數組的問題。 我該如何解決這個問題? 我需要將帶有執行代碼的 bash 命令輸出從服務器發送回客戶端。 協議是TCP。 謝謝!

     void func(int sockfd)
     { 
        char buff[MAX]; 
        for (;;) 
        { 
            bzero(buff, MAX); 
            read(sockfd, buff, sizeof(buff)); 
            printf("From client: %s\n", buff);
            if (strncmp("exit", buff, 4) == 0) 
            { 
                printf("Server Exit...\n"); 
                write(sockfd, buff, sizeof(buff));
                break; 
            } 
            FILE *cmd=popen(buff,"r");
            while (fgets(buff, sizeof(buff), cmd))
            strcpy(buff,cmd);
            pclose(cmd);
            write(sockfd, buff, sizeof(buff)); 
            my_itoa(system(buff),buff);
            write(sockfd, buff, sizeof(buff));          
        } 
     } 

我猜您想將 bash 命令的執行結果發送回客戶端。 每次從 cmd 獲取一行字符時,您都可以更改代碼以寫入 sockfd。

FILE* cmd=popen(buff, "r");
while(fgets(buff, sizeof(buff), cmd))
{
  write(sockfd, buff, strlen(buff));  // sizeof() will write more than you actually read.
}
pclose(cmd);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM