Linux/C/ống:Ống Linux: Ghi lại đầu ra thời gian thực của ping qua popen
Làm cách nào tôi có thể nắm bắt đầu ra lệnh ping bằng popen (Hoặc các cuộc gọi hệ thống tương tự). Hiện tại popen sẽ đợi cho đến khi ping kết thúc. Sau đó, đầu ra sẽ được bán cùng nhau.
Pseudo code:
fp= popen("ping x.x.x.x", "r");
while(!feof(pFp))
{
if(fgets(fp ...) // <==currently the code blocks here until ping finishes in popen
{
printf(...real time ping output here);
}
}
C hoặc C++? Mã của bạn trông giống như C. – ThiefMaster
Có thể bạn đang bị giật. Sử dụng ống (2) để kiểm soát nhiều hơn. – cdarke
@cdarke: sẽ không giúp ích gì. Vấn đề là ping đang đệm đầu ra của nó. Tôi chắc chắn sẽ xem xét một lỗi trong ping. Nếu nó biết nó sẽ không có bất kỳ đầu ra nhiều hơn cho đến một giây (khi nó ngủ) sau đó nó nên tuôn ra đầu ra của nó trước khi ngủ ... –