为什么从system()调用的命令会等待执行?

时间:2017-07-13 15:05:14

标签: c linux cgi system sleep

在嵌入式系统上运行,运行自定义精简版Linux 2.6.39.4,网页前端使用javascript代码与C中编码的后端通过{{进行通信1}}脚本。 (继承这个项目,这是一场噩梦)

情境:一个网页会调用CGI脚本,然后会激活一些cgi代码,这会产生一些C个来电,以及然后睡觉等待数据。作为参考,这段代码正在初始化WLAN模块。

问题:system()代码的开头,调用C来启动system()进程。在调用函数存在之后,它调用第二个函数调用udhcpc来等待数据。但是,似乎先前启动的sleep()进程在udhcpc之后才会执行。我搞不清楚了。

正在执行的特定sleep命令是:

system

我的印象是系统调用应该在那里等待命令完成,此时它会退出并继续。在我的终端窗口中,我看不到从system("udhcpc -n -i eth1 -q"); 开始的输出,直到我的睡眠执行后 (通过记录一些调试语句来跟踪执行路径)

我是否误解udhcpc来电是如何运作的?或者这与system模块通过C执行的事实有什么关系?

澄清一下,这就是目前的操作顺序:

  1. 在网页上单击按钮,该网页调用CGI脚本
  2. CGI脚本调用已编译的C应用程序
  3. C应用程序使用系统调用启动udhcpc
  4. ---->我希望在终端看到来自udhcpc的输出
  5. C应用程序休眠并等待数据
  6. ---->直到现在,睡眠结束后才能看到udhcpc的输出

0 个答案:

没有答案