[問題] 請教一下 popen+fgets
板友們晚安,我想透過Linux C, popen執行一個binary,並獲得binary的stdout
單執行binary 是正常的。會印出 start test,也會每隔3秒印出
但我如果透過另支程式 popen 加 fgets就會卡住,試著 fflush(fp)也無用,請問
有人知道是啥問題嗎? 謝謝。
binary code:
int main () {
int ret = 0;
struct pollfd fds[1] = {0};
int fd = timerfd_create(CLOCK_MONOTONIC, 0);
char rbuf[1024] = {0};
struct itimerspec itval;
itval.it_interval.tv_sec = 3;
itval.it_interval.tv_nsec = 0;
itval.it_value.tv_sec = 3;
itval.it_value.tv_nsec = 0;
fd[0].fd = fd;
fds[0]│events = POLLIN;
timerfd_settime (fd, 0, &itval, NULL);
printf("start test\n");
while(1) {
ret = poll(fds, 1, -1);
if(ret < 0) {
printf("poll fail\n");
} else if(ret == 0) {
printf("time out\n");
} else {
read(fds[0].fd, &rbuf, 1024);
}
printf("finish poll\n");
}
}
test.c:
int main()
{
char line[1024] = {0};
FILE *fp = popen("./burn", "r");
fflush(fp);
while(fgets(line, 1022, fp) != NULL) {
printf("line:%s\n", line);
}
printf("123\n");
return 0;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.224.106.216 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1654009328.A.496.html
推
06/01 00:21,
2年前
, 1F
06/01 00:21, 1F
→
06/01 00:21,
2年前
, 2F
06/01 00:21, 2F
→
06/01 00:23,
2年前
, 3F
06/01 00:23, 3F
→
06/01 00:25,
2年前
, 4F
06/01 00:25, 4F
推
06/01 04:18,
2年前
, 5F
06/01 04:18, 5F
→
06/01 04:19,
2年前
, 6F
06/01 04:19, 6F
→
06/01 06:38,
2年前
, 7F
06/01 06:38, 7F
→
06/01 06:41,
2年前
, 8F
06/01 06:41, 8F
推
06/01 10:31,
2年前
, 9F
06/01 10:31, 9F
推
06/01 12:15,
2年前
, 10F
06/01 12:15, 10F
→
06/01 12:16,
2年前
, 11F
06/01 12:16, 11F
→
06/01 12:16,
2年前
, 12F
06/01 12:16, 12F
→
06/01 12:18,
2年前
, 13F
06/01 12:18, 13F
→
06/01 12:20,
2年前
, 14F
06/01 12:20, 14F
→
06/05 20:59, , 15F
06/05 20:59, 15F
推
06/23 12:52, , 16F
06/23 12:52, 16F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章