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互相交换?
答案 0 :(得分:3)
这必须做process scheduling,这是一个相当复杂的话题。
我对这个主题的了解不足以准确解释为什么它是随机的,但是足以说Linux内核决定每个进程获得多少CPU时间,并且基于还有多少其他进程正在运行和他们究竟在做什么,它可以发生巨大变化。
答案 1 :(得分:0)
因为两个进程同时运行? 这不是你想要的吗?
答案 2 :(得分:0)
顺便说一句,是的,通常不会在一行中给出一个字符串,所以我假设你的意思是你想要的:
一个
b
一个
b
一个
b
我想不出用标准的unix命令做这个的更短的方法:
awk 'BEGIN{while (1){print "a\nb"}}'