Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 我怎样才能等到指定的时间;xterm";完成了?_C_Linux_Bash_Shell - Fatal编程技术网

C 我怎样才能等到指定的时间;xterm";完成了?

C 我怎样才能等到指定的时间;xterm";完成了?,c,linux,bash,shell,C,Linux,Bash,Shell,在我的c-shell文件中,我做了如下操作: xterm-e“源XX0”和 xterm-e“来源XX1”& 等等 代码 “wait”之后的代码将在两个xterm完成后执行,这样做很好 但这也带来了问题。如果我打开了一些ps,比如geditn打开的一个txt文件,或者我打开了一个eclipse,它将挂在那里,因为“wait”正在等待所有作业完成 那么,我怎么能让“等待”只等待这两个xterm作业呢 或者换句话说,我希望这两个“xterm”同时运行。在它们都完成之后,代码就可以继续了。我该怎么做 非

在我的c-shell文件中,我做了如下操作:

xterm-e“源XX0”和

xterm-e“来源XX1”&

等等

代码

“wait”之后的代码将在两个xterm完成后执行,这样做很好

但这也带来了问题。如果我打开了一些ps,比如geditn打开的一个txt文件,或者我打开了一个eclipse,它将挂在那里,因为“wait”正在等待所有作业完成

那么,我怎么能让“等待”只等待这两个xterm作业呢

或者换句话说,我希望这两个“xterm”同时运行。在它们都完成之后,代码就可以继续了。我该怎么做


非常感谢

告诉
等待
它应该等待的进程ID:

xterm ... &
pid1=$!

xterm ... &
pid2=$!

wait $pid1 $pid2
假设您使用了一个shell,其中
wait
支持多个参数(bash、zsh,…)。如果使用sh实现可移植性,则必须进行两次等待:

wait $pid1
wait $pid2

这将一直等到两者都完成。如果第二个在第一个之前完成,等待将立即返回。

Google for
bash job control
并阅读Hi@ahilsend,我发现如果我直接使用PID编号,它会起作用,比如:wait$20234如果我保存编号,比如:sleep 20&set pid1=$!睡眠30&设置pid2=$!wait$pid1$pid2它说wait:argumentsbash支持太多,无法等待多个pid。你在用sh吗?如果它不需要非常便携,那么就改用bash。否则执行两个命令:
wait$pid1;等待$pid2这将等待两个操作完成。如果第二个在第一个之前完成,它会给你一个消息,它不是一个孩子,但会立即返回。好吧,我使用的是C Shell。因为这对我有效:wait$20234(20234是我从sleep 30的控制台获得的一个PID&)当我像“pid1=$!”一样保存它时,我想我应该使用“wait$($pid1)”,但$($pid1)是不允许的,这应该很容易做对吗?等等,19601美元19602美元对我来说也很好。我明白了,从来没有用过c外壳。在这种情况下,请尝试\$$pid1。