Fork() 在 switch-case 中打印多个大小写
Fork() printing multiple case in switch-case
我刚开始学习Linux编程,我的疑问对你来说可能很愚蠢,但我真的很困惑,所以请帮助我解决这个问题-
这是代码
#include <string>
#include <iostream>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include "err.h"
using namespace std;
int main(){
int a=-5;
switch(a=fork()){
case -1:
cout<<"error\n";
break;
case 0:
cout<<"here comes the child\n";
break;
default:
cout<<"a is "<<a<<endl;
// break;
}
return 0;
}
输出:
一个是28866
child
来了
- 问题 1:我不明白为什么 case 0: 和 default: 都得到
执行!
- 问题 2:如果 child 进程是
创建成功!
请参阅 fork(2) 文档:
On success, the PID of the child process is returned in the parent,
and 0 is returned in the child.
所以在你的例子中,你得到 both 28866
和 0
作为两个单独进程(父进程和子进程过程)解释了输出。请注意,输出顺序可能会有所不同。
这是 fork
完成的目的:您想同时执行您的程序或部分程序。 return 值允许您检测您所在的进程。
Question1:I don't understand why both case 0: and default: gets executed !
case 0由子进程执行,其中fork
returns 0。默认case在父进程中执行,其中return值为fork
是新子进程的pid。
Fork,正如 documentation 所说,创建调用进程的精确副本,包括当前指令指针。 IE。父进程和子进程都将执行 switch 语句。
Question2:According to me value of a should be 0 if child process is created successfully!
在子进程中,是的。在父进程中,它是子进程的 pid。
成功执行后,fork命令return将子进程的进程ID传给父进程,return传0给子进程。 fork命令执行后,父进程和子进程都执行同一套指令。在这种情况下,子进程和父进程都执行 switch 语句。值 "a is 28866" 由子进程打印,值 "here comes the child" 由父进程打印。要让父子进程执行不同的指令,查看fork命令的return值
我刚开始学习Linux编程,我的疑问对你来说可能很愚蠢,但我真的很困惑,所以请帮助我解决这个问题- 这是代码
#include <string>
#include <iostream>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include "err.h"
using namespace std;
int main(){
int a=-5;
switch(a=fork()){
case -1:
cout<<"error\n";
break;
case 0:
cout<<"here comes the child\n";
break;
default:
cout<<"a is "<<a<<endl;
// break;
}
return 0;
}
输出: 一个是28866 child
来了- 问题 1:我不明白为什么 case 0: 和 default: 都得到 执行!
- 问题 2:如果 child 进程是 创建成功!
请参阅 fork(2) 文档:
On success, the PID of the child process is returned in the parent, and 0 is returned in the child.
所以在你的例子中,你得到 both 28866
和 0
作为两个单独进程(父进程和子进程过程)解释了输出。请注意,输出顺序可能会有所不同。
这是 fork
完成的目的:您想同时执行您的程序或部分程序。 return 值允许您检测您所在的进程。
Question1:I don't understand why both case 0: and default: gets executed !
case 0由子进程执行,其中fork
returns 0。默认case在父进程中执行,其中return值为fork
是新子进程的pid。
Fork,正如 documentation 所说,创建调用进程的精确副本,包括当前指令指针。 IE。父进程和子进程都将执行 switch 语句。
Question2:According to me value of a should be 0 if child process is created successfully!
在子进程中,是的。在父进程中,它是子进程的 pid。
成功执行后,fork命令return将子进程的进程ID传给父进程,return传0给子进程。 fork命令执行后,父进程和子进程都执行同一套指令。在这种情况下,子进程和父进程都执行 switch 语句。值 "a is 28866" 由子进程打印,值 "here comes the child" 由父进程打印。要让父子进程执行不同的指令,查看fork命令的return值