gpt4 book ai didi

c - Popen 导致程序卡住

转载 作者:太空宇宙 更新时间:2023-11-04 11:22:07 26 4
gpt4 key购买 nike

我有一个函数可以在特定时间间隔内返回我的 Wifi 信号强度。

FILE *sig;
int sigstr=0, max;
sig = popen("iwconfig wlan0 | awk '/Link/ {print $2}'","r");
while(fgetc(sig)!='=');
fscanf(sig,"%d/%d", &sigstr, &max);
pclose(sig);
return(((sigstr*4)+(max/2))/max);

我遇到的问题是我的程序在一段时间后卡住,具体取决于获取 Wifi 信号的间隔时间。间隔越短,我的程序卡住得越快。如果我错了,请纠正我,但这似乎是内存问题。随着时间的推移,一些项目没有正确地从堆栈中移除或释放,导致内存被填满并最终达到程序无法继续运行的水平。所以我的问题是除了我上面的内容之外,我是否需要包含另一个声明来释放文件签名或者 pclose 会处理这个问题?

谢谢!

最佳答案

因为 fscanf 可以阻塞。使用 fcntl 将从 popen 获得的文件描述符设置为非阻塞。

关于c - Popen 导致程序卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17576718/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com