gpt4 book ai didi

c - 使用 libfcgi 在 "C"中编写的 lighttpd、fastcgi 和应用程序脚本 - 奇怪的系统错误消息

转载 作者:太空宇宙 更新时间:2023-11-04 10:32:33 24 4
gpt4 key购买 nike

我在成功打开调用后立即收到一条奇怪的 Linux 系统消息“传输端点未连接”以响应写入调用。所有这一切都在 Slackware Linux 2.6.33.4 重新启动后立即发生。

我正在用 C 编写一个表单处理程序,它在 lighttpd 和 fastcgi 下运行(在一些聪明的 alec 开始询问'为什么我不使用他/她最喜欢的语言,这是因为我喜欢 C ---好吗?好吧!)。

我已经运行了应用程序的主要功能 - 它显示 index.htm(这是一个表单),当表单“提交”时,找到我编写的正确处理返回内容的程序,显示下一个表格。它已经足够复杂了,现在我需要在某处打印一些调试语句,以便从程序添加中给我一些反馈。这样问题就来了。

研究表明此消息通常意味着文件路径的端点未挂载或已成为未挂载但/tmp/debug.log(这是我尝试创建/追加的文件位于根目录下) partition。那为什么open()成功而write()不成功呢?

下面的程序片段是造成麻烦的地方。 printf() 语句将输出发送到 Web 界面(对于那些不熟悉 libfcgi 的人)让我知道发生了什么。

我无法通过这个论坛的疯狂代码过滤器获得我的(正确缩进的)代码,我也无法将它附加到 zip 文件中,所以你只需要相信我的话,语法是正确的。

有什么线索吗?

最佳答案

这一行

if(fd = open(DEBUG_FILE_NAME, (O_CREAT | O_APPEND | O_RDWR), (S_IWUSR | S_IRGRP | S_IROTH | S_IRUSR)) < 0)

结果为 fd被设置为 open(DEBUG_FILE_NAME, (O_CREAT | O_APPEND | O_RDWR), (S_IWUSR | S_IRGRP | S_IROTH | S_IRUSR)) < 0 的结果这很可能是 0 .

所以 write(fd, ...尝试写入stdin ,这很奇怪,所以你会得到一个奇怪的错误......;-)

要解决此问题,请修复括号。

例如,您可以使用 Yoda-Conditions 以保存方式执行此操作:

if (0 > (fd = open(DEBUG_FILE_NAME, (O_CREAT | O_APPEND | O_RDWR), (S_IWUSR | S_IRGRP | S_IROTH | S_IRUSR))))

(“保存”的意思是所有重要的东西都在左边一个的地方:if (0 > (fd = open(...)

关于c - 使用 libfcgi 在 "C"中编写的 lighttpd、fastcgi 和应用程序脚本 - 奇怪的系统错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39190654/

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