在C中正确输出这个fork概念

时间:2015-06-11 00:10:51

标签: c output fork atoi

因此,出于某种原因,我无法在C中获得此代码的输出,因此我只能在下面的代码中提出一些概念性问题:

  1. min做什么?它只是定义整数N. 作为阵列?
  2. 在for循环中,int N = atoi(argv[i]);是什么意思?是-1意味着它是错误还是没有正确的循环?这意味着我无法使用fork创建一个孩子?
  3. if (-1 = fork())在调用printf函数时做了什么?
  4. 正确的输出应该是什么?
  5. 代码:

    getpid()

1 个答案:

答案 0 :(得分:1)

您可以通过查看手册页来回答您提出的许多问题。无论如何,我会尝试解释它们。

1)int atoi(const char *str) str - 这是整数的字符串表示形式。此函数atoi将转换后的整数作为int值返回。如果无法执行有效转换,则返回零。

至于你的代码,我有存储垃圾值。因此atoi(argv[i]))的值是不可预测的。您可能想为i分配一个值。

2)-1 == fork(),(我假设你的代码中出现了语法错误,你已经知道了)我们检查fork()函数的返回值会发生什么,如果检查手册fork()用于创建新进程。如果它无法创建新进程,则返回-1。如果它像fork() == -1

那样写得很有意义

3)getpid()返回调用进程的进程ID。 (这通常由生成唯一临时文件名的例程使用。)

4)右输出是什么意思?你试过运行代码并得到任何错误?请详细说明

如果使用命令行参数运行更正后的代码,则输出结果如下所示。

de@ubuntu:~/Desktop$ ./a.out 2
Create processes....
Process id  = 25405
Process id  = 25406
Process id  = 25408
Process id  = 25407