TLDR ;如何从终端运行节点进程,从节点启动进程,退出节点进程并使该进程附加到父终端?
我正在编写一个节点终端应用程序,应该通过启动新的终端应用程序(例如vim
,emacs
,tmux
)结束。我希望该应用程序像在启动节点应用程序的终端中手动执行一样运行。
我目前对tmux
的解决方法是运行节点应用程序,该应用程序将建立一个新的tmux
会话并在应用程序之前回显tmux attach-session
命令存在。然后,用户可以在终端中手动键入此命令并执行它。现在,tmux会话在终端上运行 attached 。
我想将 attach 命令移到节点应用程序中,但最终结果相同。即节点应用程序终止,并且tmux
会话附加到终端上运行。在我看来,这需要对emacs
,vim
等应用程序执行相同的操作。在这些情况下,我无法解耦设置和附加。 (据我所知,vim
和emacs
可以处理这种解耦,我很想知道,但是最初的问题要求为任何终端应用程序提供一个通用的解决方案。)
通过附加,我的意思是好像命令/程序是在终端中手动执行的。
答案 0 :(得分:0)
POSIX <html lang="en" dir="ltr">
<head>
<title>-</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://fonts.googleapis.com/css?family=Roboto+Condensed" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet">
<style>
/* Set the size of the div element that contains the map */
#map {
width: 100%; /* The width is the width of the web page */
max-width:450px;
}
</style>
<link rel="stylesheet" type="text/css" href="../main.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
...
<div class="row">
...
<div class="col-sm-6">
<div id="map"></div>
</div>
</div>
<script>
// Initialize and add the map
function initMap() {
// The location of company
var freshlocation = {lat: 1.337344, lng: 103.912835};
// The map, centered at company
var map = new google.maps.Map(
document.getElementById('map'), {zoom: 7, center: freshlocation});
// The marker, positioned at company
var marker = new google.maps.Marker({position: freshlocation, map: map});
}
</script>
<script async defer
src="https://maps.googleapis.com/maps/api/js?key=MYAPIKEY&callback=initMap">
</script>
...
</div>
</body>
</html>
解决了此问题,如@Amadan上面所述。此解决方案在Windows上不起作用。
以下代码段显示了如何使用kexec
模块执行此操作的示例。
exec