子进程的主要功能

Main function for a child process

我有一个小但令人困惑的问题... 第一个问题是 main.I 有什么用知道这个问题很傻很简单但是我有一个 problem.I 写了一个代码

#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();

}

}`

你有没有观察到我在我的子进程中使用的第二个主要函数,编译器没有给我任何错误。添加到这个它给了我 "hello" 和 5.[=12= 的输出]

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

int main(){

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

所以我的问题是为什么它对子进程有效?我假设没有函数可以命名为 main() 并且每个子进程都将有一个从其共享的主函数的概念也是如此parent 是 false.Please 解释一下我系统中这段代码下面发生了什么,因为子进程将 main 当作另一个函数,它不需要 main 函数 also.Then 子进程如何知道它应该从哪里开始开始?

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

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