Tôi đang viết một ứng dụng C++ và tôi cần đọc kết quả của lệnh hệ thống.Đọc kết quả popen bằng C++
Tôi đang sử dụng popen()
nhiều hơn hoặc ít hơn như trình bày ở đây:
const int MAX_BUFFER = 2048;
string cmd="ls -l";
char buffer[MAX_BUFFER];
FILE *stream = popen(cmd.c_str(), "r");
if (stream){
while (!feof(stream))
{
if (fgets(buffer, MAX_BUFFER, stream) != NULL)
{
//here is all my code
}
}
pclose(stream);
}
Tôi đã cố gắng để tái viết này theo một cách khác. Tôi đã thấy một số giải pháp không chuẩn như:
FILE *myfile;
std::fstream fileStream(myfile);
std::string mystring;
while(std::getline(myfile,mystring))
{
// .... Here I do what I need
}
Trình biên dịch của tôi không chấp nhận điều này.
Làm cách nào để đọc từ popen
bằng C++?
'Đây là mã của tôi' ở đây? Giải pháp đầu tiên của bạn hoạt động hoàn hảo nếu đó là 'data.append (buffer);'. – Beta
Bạn có thể xuất bản ngăn xếp cuộc gọi từ sự cố không? – Arkadiy
Vui lòng cung cấp chương trình ** hoàn chỉnh tối thiểu ** để minh họa lỗi của bạn. Bắt đầu với chương trình thực tế của bạn, xóa tất cả các dòng hoạt động và chỉ cho chúng tôi thấy những gì còn lại. [Ở đây] (http://ideone.com/azOcT) là một sự kiểm tra về việc triển khai thực hiện đoạn mã đầu tiên của bạn. Xem http://sscce.org để biết thêm thông tin về cách sử dụng kỹ thuật này. –