我正在编写一个 C 代码来访问一个文件流并逐行打印它的内容(实际上,它是一个已被 popen()-ed 的进程的标准流)。我想出了一种 sss (简单但仍然愚蠢)的方式来访问文件:
static int this_event_handler(struct msg) {
...
pFile = popen ("some command");
while ( fgets (mystring , 100 , pFile) != NULL ) {
puts (mystring);
}
...
}
我知道这段代码会阻塞事件循环,以后发送给服务器的消息将没有用。那么,有没有一种在不阻塞事件循环的情况下处理这个问题的好方法呢?
例如,我正在寻找一种方法,它可以像事件驱动一样侦听流,并在写入/读取新行时发出事件(不创建新线程)。