子进程的主要功能

时间:2015-03-14 06:23:27

标签: c++ linux linux-kernel

我有一个小而困惑的问题...... 第一个问题是main的用途是什么。我知道这个问题很愚蠢而且我有问题。我写了一个代码

#include<unistd.h>
#include<sys/types.h>
#include<stdio.h>


int main(){
pid_t ty;

ty=fork();
if(ty==0){
const char* x="/home/brucewilson/Desktop/jack_sahoo_teja_CDP/hey2";
static char *argv[]={"echo","Foo is my name.",NULL};
int main(){//observe this is second main in my child process
printf("hello");
}
int add(){
printf("5");
}

main();
add();

}

}`

你有没有观察我在我的子进程中使用的第二个主要功能,编译器没有给我这个错误..添加到这个它给了我输出为“你好”和5。

显然下面的代码会出错...

int main(){

printf("main");
main();
}
int main(){
}

所以我的问题是为什么它对子进程有用?所以我认为假设为无效的概念可以命名为main(),并且每个子进程都有一个从其父进程共享的main函数假。请解释一下我系统内部代码下面的内容,因为子进程假设main作为另一个函数而且它也不需要main函数。那么子进程如何知道它应该从哪里开始呢?

1 个答案:

答案 0 :(得分:2)

您使用的是非标准GCC extension known as 'nested functions'

您的第二个示例失败,因为您没有嵌套main()的第二个定义,因此它与第一个定义冲突。