问题标签 [pclose]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1123 浏览

c - 为什么 pclose(3) 不等待 shell 命令终止

我想测试 pclose(3) 是否会等待 shell 命令终止。我写了两个小 shell 程序。

c程序:

然后,编译: $ gcc -o ptest ptest.c

接下来运行ptest(我的电脑是Ubuntu 12.04.3 LTS):

此测试将等待 shell 终止并输出退出状态 0。但是,当我按以下形式运行 ptest 时:

这一次,ptest 不等待shell 程序并立即终止自己,我只是在sleep 之前添加了一个echo 语句,但结果不同。我不知道为什么。

0 投票
1 回答
1425 浏览

c++ - 做一个popen(),把FILE*指针放在一个fstream中,pclose()呢?

所以...我开始另一个进程,它接受来自我的程序的一些输入(它也可以反过来)。类似的东西:

现在,我可以将 f 放入 fstream 中,这样我就可以使用流(因为我的程序是 C++ 中的,这似乎是一件明智的事情。)

到这里为止,我很好。现在是我完成向子进程发送数据的时候了。我想要的只是关闭管道。据我所知,我们应该使用 pclose() 因为该函数确保其他进程接收所有数据。换句话说,pclose() 函数知道如何干净利落地关闭管道。

不幸的是,因为我把 f 放在了一个 ofstream 中,我不能直接关闭它,可以吗?

有没有办法从 ofstream 捕获关闭并确保它以我希望它关闭的方式关闭。

0 投票
1 回答
36 浏览

c++ - 为什么 popn() 一次又一次调用时返回相同的输出

我正在尝试下面的示例

第一次运行这个程序时。它工作正常,但重用程序不能正常工作。我第一次使用设备(PID = 1300)进行测试,然后将其移除并插入新设备(PID = 0820)并再次运行程序。但仍然给出相同的输出。

pclose()返回 0

0 投票
2 回答
1198 浏览

c++ - pclose() 是否返回管道的终止状态在所有平台上左移 8 位?

我在 Centos4 上发现 popen() 的手册页部分说明:

但是,在我的 C++ 应用程序中,当我实际执行代码时,我看到终止状态向左移动了 8 位。也许这是为了将管道的终止状态中的 -1 与 pclose() 自己的退出状态 -1 区分开来?

这是便携式行为吗?为什么手册页没有提到这一点?如果不可移植,哪些平台符合这种行为?

0 投票
1 回答
571 浏览

c++ - 有没有办法测试 pclose() 是否会成功?

在我的 C++ 应用程序中,我看到一个 pclose() 挂起,因为管道的进程挂起并且从未退出。无论如何我可以做类似 select() 的事情来测试 pclose() 是否会因为子进程已经完成而返回?如果可能的话,我宁愿不做 fork() 而不是 popen() 。如果 fork() 是唯一的解决方案,是否有使用 fork() 替换 popen() / pclose() 场景的示例?

0 投票
1 回答
1683 浏览

php - 无法使用 Popen 运行后台 PHP 脚本

我有一个需要在后台运行的 PHP 代码(没有 cronjobs 或类似选项),它是完整的,但我不能在后台调用它。我正在尝试以下操作:

但它永远不会运行。如果我手动运行import.php ,它可以正常工作。

PS:我无法更改import.php。

帮助?

0 投票
2 回答
603 浏览

c - 什么时候调用_pclose?

我有一个函数,我在其中调用了 _open 几次。

如果_popen返回NULL,我需要_pclose在函数返回之前调用吗?

我已经标记了 3 个我认为_pclose可能需要调用的位置。

我必须致电这些地点中的哪一个_pclose

0 投票
2 回答
1364 浏览

php - 如何让脚本在后台运行 - 不起作用

我正在尝试启动 Ratchet 的 chat-server.php 文件,该文件是从 php 文件启动套接字服务器所必需的,这样每当客户端访问该页面时,服务器就会启动但它不会发生。这个 chat-server.php 文件需要从终端运行,但我试图在用户访问时从主页运行它。

文件结构

./index.php

./config.php

./vendor/(所有供应商文件)

./src/MyApp/Chat.php

./js/app.js

./inc/connect.php <--数据库连接文件

./inc/send-message.php

./inc/startServer.php

./inc/bg.php

./inc/serverStatus.txt

./css/index.css

./css/reset.css

./bin/chat-server.php

配置文件

聊天服务器.php

bg.php

启动服务器.php

?>

服务器状态.txt

它的默认值已设置为0

注意:相应地更新了代码,但现在仍然无法使用。

另外,我不知道在发生任何故障时重新启动服务器或在所有客户端离开时如何关闭服务器。

0 投票
1 回答
2020 浏览

php - 在 Windows 上的 PHP 中执行并获取 pid 后台进程

我在 Windows apache 服务器的后台启动了一个进程。

index.php 如下:

test.php 如下:

当时,我想得到 pid which php -f test.php。当我启动 index.php 时,我可以在命令行的输出中看到新php.exe进程。tasklist我怎样才能得到这个后台进程的pid。

谢谢。

0 投票
0 回答
29 浏览

c - 如何在读取模拟输入值时捕获错误

我目前正在尝试使我的代码更安全、更有条理。到目前为止,当我想读取模拟输入值时,我使用了以下工作正常的函数:

但是,到目前为止,我没有办法获取错误消息或检查该值是否已正确读取......有没有办法改变它?我看过一些关于“管道流”的文章,但由于它们总是关于执行文件,我不知道我是否走在正确的道路上......

如果你能告诉我,如何最好地解决这个问题,那将有很大帮助。

感谢您的时间!