2010-10-01 34 views
2

在Unix中,我有一个我想用nohup运行的进程。然而,这个过程将在某个时候等待提示,我必须输入yesno才能继续。到目前为止,在Unix中我一直在做以下我可以在Perl的反引号中执行多行命令吗?

nohup myprocess <<EOF 
y 
EOF 

所以我使用的nohup和管道与文件“Y”,然后关闭该文件启动进程的myprocess“。上面的行实际上是三个独立的命令 - 即我在UNIX的第一行中输入,然后在输入'y'后输入'y',然后按回车键,最后输入'EOF'并再次返回。

我想知道在Perl中执行此操作,但我不确定如何执行此命令,因为它在三行以上。我不知道以下是否会起作用....

my $startprocess = `nohup myprocess <<EOF & 
y 
EOF 
` 

请帮忙 - 谢谢!

+0

是的,它会工作。 – 2010-10-01 01:14:13

+0

也许Unix和Linux的堆栈交换可能有所帮助:http://unix.stackexchange.com/ – oadams 2010-10-01 04:02:51

+1

当你不知道某些东西是否可行时,编写一个小测试程序并找出答案。 :) – 2010-10-01 17:34:58

回答

5

我认为你的建议将按原样工作。如果没有,请尝试用管替换重定向:

my $startprocess = `(echo "y" | nohup myprocess) &`; 

此外,根据为什么你正在做一个nohup,请看看下面的纯Perl的daemonizing方式使用Proc::DaemonHow can I run a Perl script as a system daemon in linux?

+0

+1:如果我没有测试它,这看起来很合理。 – dawg 2010-10-01 01:43:44

+0

在大多数Unixen/usr/bin/yes上 – user449592 2010-10-01 08:43:23

2

Expect为互动节目也可以使用。

相关问题