gpt4 book ai didi

c - 系统命令在 C 程序中挂起,但是当我在 bash 上运行命令时它成功了

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:12:14 27 4
gpt4 key购买 nike

我需要发送一个 IP 的 arp 来获取它在不同机器上配置的 mac 地址。我正在通过“system(arping -c 3 -i eth0)”从 C 程序中获取这个 ip,但我看到它卡在那里。

但是,如果我从 bash“arping -c 3 -i eth0”运行相同的命令,它会成功执行。

我不明白为什么系统命令在这种情况下挂起,而命令从 bash 运行时成功完成。

谢谢,

最佳答案

既然你说挂了你可以试试:

strace -o my_prog.strace -f ./my_prog

挂掉之后再杀掉。然后您可以查看 strace 输出文件 my_prog.strace 并尝试找出问题所在。

您可能想查看 strace 手册页以查看您可能喜欢使用的其他选项——对我特别有用的选项是使它在缓冲区(和字符串)输入/输出中显示更多数据的选项。

如果它没有真正挂起,您应该检查调用 system( ) 的返回值,然后检查 errno

编辑

如果 arping 实际上是指向执行 sudosetuid 根程序的链接,我刚刚想到的可能会导致挂起> 在真正的 arping 上,它正在等待输入密码,但该程序的终端设置不正确。

关于c - 系统命令在 C 程序中挂起,但是当我在 bash 上运行命令时它成功了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3341796/

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