如何从tcl/tk生成应用程序,使其';是独立于父应用程序的吗?

如何从tcl/tk生成应用程序,使其';是独立于父应用程序的吗?,tcl,expect,tk,Tcl,Expect,Tk,我什么都试过了。我试过exec。我试过用烟斗打开。我试过expect的“繁殖”命令。我甚至尝试过创建启动应用程序的脚本。这些都不管用。这应该是非常简单的事情,但事实并非如此。基本上我想要执行“/myapp&”的东西。我不希望父应用程序等待任何输入。我不希望家长应用程序在关闭时杀死孩子。我也不希望关闭子级会影响父级 我已经花了4个小时试图做到这一点没有骰子 编辑4:我制作了一个小测试用例。事实上我知道,我认为这个bug与一个名为tcl的shell脚本有关,该脚本没有意识到它已经完成,并且需要更多的

我什么都试过了。我试过exec。我试过用烟斗打开。我试过expect的“繁殖”命令。我甚至尝试过创建启动应用程序的脚本。这些都不管用。这应该是非常简单的事情,但事实并非如此。基本上我想要执行“/myapp&”的东西。我不希望父应用程序等待任何输入。我不希望家长应用程序在关闭时杀死孩子。我也不希望关闭子级会影响父级

我已经花了4个小时试图做到这一点没有骰子

编辑4:我制作了一个小测试用例。事实上我知道,我认为这个bug与一个名为tcl的shell脚本有关,该脚本没有意识到它已经完成,并且需要更多的输入。但奇怪的是,脚本确实运行了,并且仍然执行以下tcl命令

创建一个名为“data.dat”的文件

然后在上面运行这个tcl文件

#!/usr/bin/wish

frame .main
button .button -text "Make plot" -command { makeplot }
pack .button

proc makeplot {} {

set data {#!/bin/bash
cat << EOF > plot.gnu
splot "data.dat" using 1:2:3 with points
EOF
}

set fileId [open "plot.csh" "w"]
puts -nonewline $fileId $data
flush $fileId
close $fileId
exec chmod +x ./plot.csh
exec ./plot.csh
exec gnuplot -persist < plot.gnu &

}
#/usr/bin/wish
主框架
按钮-文本“makeplot”-命令{makeplot}
打包。按钮
proc makeplot{}{
设置数据{#!/bin/bash
cat plot.gnu
使用1:2:3和点显示“data.dat”
EOF
}
设置文件ID[打开“plot.csh”“w”]
puts-nonewline$fileId$data
刷新$fileId
关闭$fileId
exec chmod+x./plot.csh
exec./plot.csh
exec gnuplot-persist
gnuplot绘图将不会出现,除非您将其“前景化”。我已经尝试了很多不同的方法(有/没有符号)。奇怪的是,我确实在bash下得到了这个版本


编辑5:我放弃!这个测试用例现在正在工作。不只是片刻以前。我不知道这里发生了什么。这是15年编程中最难修复的错误之一。

尝试
exec
,最后使用
&

exec ./myapp &

你试过“现在”吗?
./myapp |目前

我现在有了一个有效的方法。看起来很难看。我很想看看我是否在这个过程中发明了一台Rube Goldberg机器。(实际上,我的方法并不完全有效。它有时间问题。)这是我尝试的第一件事。它有问题。后台应用程序不会出现,除非父TCL应用程序正在前台运行。@Person II博士:也许您可以提供有关您的应用程序和期望的更多信息?无论原始应用程序的前景状态如何,我发布的解决方案都能按预期工作。也许您的第二个进程实际上需要TTY输入,所以它被阻止了,因为当您在后台启动它时,它与TTY分离了?我试图生成的应用程序只是一个gnuplot脚本。就这样。上述解决方案不起作用,即使使用xeyes程序也不起作用。它仍然挂起应用程序并将“+挂起(tty输出)”打印到控制台。
exec ./myapp &