我有一个小而困惑的问题...... 第一个问题是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函数。那么子进程如何知道它应该从哪里开始呢?
答案 0 :(得分:2)
您使用的是非标准GCC extension known as 'nested functions'。
您的第二个示例失败,因为您没有嵌套main()
的第二个定义,因此它与第一个定义冲突。