Bash'是的'和'是的b'

时间:2013-03-08 17:14:26

标签: linux bash random stream libc

bash: $: yes a
[some output] then press Ctrl+Z
      $: yes b
[some output] then press Ctrl+Z

然后,做两次bg并得到一些输出:

  

a b b b a a a b a a a b b a a a a b a a b a a b a a a a a a   b b b b b b b b等。

为什么a和b互相交换?

3 个答案:

答案 0 :(得分:3)

这必须做process scheduling,这是一个相当复杂的话题。

我对这个主题的了解不足以准确解释为什么它是随机的,但是足以说Linux内核决定每个进程获得多少CPU时间,并且基于还有多少其他进程正在运行和他们究竟在做什么,它可以发生巨大变化。

答案 1 :(得分:0)

因为两个进程同时运行? 这不是你想要的吗?

答案 2 :(得分:0)

顺便说一句,是的,通常不会在一行中给出一个字符串,所以我假设你的意思是你想要的: 一个
b
一个
b
一个
b

我想不出用标准的unix命令做这个的更短的方法:

awk 'BEGIN{while (1){print "a\nb"}}'