奇怪的fork()行为(先前的printf被调用)

卡巴拉平托

我正在尝试解决一个关于模拟一个有一个雇员(父流程)和多个客户(子流程)的商店的学校问题。我简化了以下代码,以突出显示在测试时遇到的问题:

#define N_CUSTOMERS 10

void employee() {
}

void customer(int id) {
    exit(0);
}

int main() {

    printf("working!");

    // create customers
    for(int i = 0; i < N_CUSTOMERS; i++)
        if(!fork())
            customer(i);

    // be employee
    employee();

    // end
    exit(0);
}

输出是(使用编译gcc -Wall -pthread store.c -o store):

工作工作工作工作工作工作工作工作工作工作工作工作

我希望printf只能由父进程执行一次,但是,似乎为每个子进程创建了打印件。

我在这里想念什么?

鲁斯兰

printf使用行缓冲输出。由于打印的字符串没有'\n',所以之前没有打印fork()exit()缓冲区上被刷新,并且这发生在父代和所有子代中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

gdb printf的奇怪行为

来自分类Dev

printf bash奇怪的行为

来自分类Dev

奇怪的printf和scanf行为

来自分类Dev

javascript调用方法的奇怪行为

来自分类Dev

PHP printf函数及其奇怪的行为

来自分类Dev

PHP printf函数及其奇怪的行为

来自分类Dev

Linux x86-64 fork系统调用针对C标准libc FILE I / O的奇怪行为(关键字:fork,fclose,linux)

来自分类Dev

程序的行为取决于在何处调用fork

来自分类Dev

如果从内部调用API,onPrepareOptionsMenu行为很奇怪

来自分类Dev

奇怪的C#平台调用/ DLLImport行为

来自分类Dev

在viewDidLoad中调用addSubView时的奇怪行为

来自分类Dev

R - 简单调用 `sample()` 的奇怪行为

来自分类Dev

printf中'\ b'转义序列与'\ n'的奇怪行为

来自分类Dev

试图了解printf中格式说明符的奇怪行为

来自分类Dev

快速奇怪的行为-内部函数调用和外部函数调用

来自分类Dev

此代码中Linux上fork()系统调用的行为

来自分类Dev

奇怪的行为

来自分类Dev

奇怪的行为

来自分类Dev

奇怪的行为

来自分类Dev

printf()的行为

来自分类Dev

为什么调用错误的方法:奇怪的继承行为

来自分类Dev

泛型类中函数调用的奇怪行为

来自分类Dev

有关.NET事件的奇怪函数调用行为

来自分类Dev

PHP奇怪的行为:ReflectionClass :: isCloneable()调用析构函数?

来自分类Dev

从REFPROP FORTRAN文件调用属性时出现奇怪的行为

来自分类Dev

预测行为的奇怪行为

来自分类Dev

每当在fork()之前调用printf()时,每次调用fork()时,printf()的循环输出都会输出到stdout。为什么'\ n'可以解决这个问题?

来自分类Dev

在没有适当原型的情况下调用printf会调用未定义的行为吗?

来自分类Dev

在调用返回行为方面,fork() 和 exec() 系统调用与其他系统调用有何不同?

Related 相关文章

  1. 1

    gdb printf的奇怪行为

  2. 2

    printf bash奇怪的行为

  3. 3

    奇怪的printf和scanf行为

  4. 4

    javascript调用方法的奇怪行为

  5. 5

    PHP printf函数及其奇怪的行为

  6. 6

    PHP printf函数及其奇怪的行为

  7. 7

    Linux x86-64 fork系统调用针对C标准libc FILE I / O的奇怪行为(关键字:fork,fclose,linux)

  8. 8

    程序的行为取决于在何处调用fork

  9. 9

    如果从内部调用API,onPrepareOptionsMenu行为很奇怪

  10. 10

    奇怪的C#平台调用/ DLLImport行为

  11. 11

    在viewDidLoad中调用addSubView时的奇怪行为

  12. 12

    R - 简单调用 `sample()` 的奇怪行为

  13. 13

    printf中'\ b'转义序列与'\ n'的奇怪行为

  14. 14

    试图了解printf中格式说明符的奇怪行为

  15. 15

    快速奇怪的行为-内部函数调用和外部函数调用

  16. 16

    此代码中Linux上fork()系统调用的行为

  17. 17

    奇怪的行为

  18. 18

    奇怪的行为

  19. 19

    奇怪的行为

  20. 20

    printf()的行为

  21. 21

    为什么调用错误的方法:奇怪的继承行为

  22. 22

    泛型类中函数调用的奇怪行为

  23. 23

    有关.NET事件的奇怪函数调用行为

  24. 24

    PHP奇怪的行为:ReflectionClass :: isCloneable()调用析构函数?

  25. 25

    从REFPROP FORTRAN文件调用属性时出现奇怪的行为

  26. 26

    预测行为的奇怪行为

  27. 27

    每当在fork()之前调用printf()时,每次调用fork()时,printf()的循环输出都会输出到stdout。为什么'\ n'可以解决这个问题?

  28. 28

    在没有适当原型的情况下调用printf会调用未定义的行为吗?

  29. 29

    在调用返回行为方面,fork() 和 exec() 系统调用与其他系统调用有何不同?

热门标签

归档