【发布时间】:2012-02-21 14:08:00
【问题描述】:
int main(){
char ch;
fork();
cin >> c;
}
在调用 fork() 之后,我应该有 2 个运行相同代码的确切进程。为什么在运行这个简单的例子之后,我要么被要求输入一个字符一次,要么两次?每次我运行这个程序时,系统不应该期待 2 个输入吗?
>./a.out
a
>./a.out
a
b
>
【问题讨论】:
-
这不是 C 代码,您使用的是 C++ 运算符,因此我们这些不会说 C++ 的人无法帮助您。
-
第二个进程很有可能获得您在
a之后输入的\n字符。尝试将ch的类型更改为std::string,看看会发生什么。 -
我刚做了,效果一样。
-
另一个进程可能作为单独的“作业”运行,因为它不仅仅是一个线程,而是一个成熟的进程。见here。因此,尝试暂停活动作业 (Ctrl+Z),然后使用
jobs -l列出作业并尝试将另一个作业带到前台fg 2(而不是2使用另一个作业的 job_id)。