根据 popen() 的手册页,我正在打开一个 /bin/sh ......有没有办法可以重载这种行为来打开 /bin/bash shell 并与 BASH shell 脚本交互?或者我需要打开一个 pty 风格的连接来做到这一点?
我正在尝试捕获使用Posix.Process.execp
. 我移植了我在 stackoverflow 上找到的一些 C 代码,并且可以捕获一次执行的输出,但是我无法获得第二次执行的输出。
这是我的功能:
(* Runs a command c (command and argument list) using Posix.Process.execp. *)
(* If we successfully run the program, we return the lines output to stdout *)
(* in a list, along with SOME of the exit code. *)
(* If we fail to run the program, we return the error message in the list *)
(* and NONE. *)
fun execpOutput (c : string * string list) : (string list …
Run Code Online (Sandbox Code Playgroud) 情况:
我正在用C编写一个维护许多线程的程序.一旦线程结束,就会创建一个新线程.
每个线程分叉 - 子进程通过exec()运行进程,父进程等待它完成.
此外,还有一个等待信号的信号处理程序线程.如果检测到SIGINT,则它告诉主线程停止创建线程,以便最终所有线程结束并且程序可以退出.
信号在所有线程中被阻止,当然除了信号处理程序线程.
目标:
我希望能够通过发送SIGTERM来终止程序.这可以通过停止主线程创建新线程并终止线程创建的运行进程来实现.
问题:
如果信号在所有线程中被阻止,我如何向正在运行的进程发送信号以终止它们?
是否有某种方法可以使衍生过程仅接收从主程序发送的信号而不是发送到主程序的信号?