在Ubuntu环境下写了一个简简单单的C程序
1 #include<stdio.h>
2 #include<stdlib.h>
3 int main(){
4 printf("Hello,world!\n");
5 system("exit");
6 printf("if you see me,that means the 'exit' cannot work.\n");
7 return 0;
8 }
按说结果应该是打印一句helloworld可能看都看不到,然后终端自动关掉。
结果我两句输出都看到了,system("exit")一点用都没有。
gdb调试,发现执行了,但就是没效果。
刚试了下,windows下也是,
看了下system("exit")这句的返回值为0,说明成功调用,但没有出现子进程。
望大佬们指点下,本人初学操作系统。
system("exit");
->
exit(0);
可以看下system系统调用的实现,system调用会开启一个子进程并把参数当作一个shell命令来执行,子进程结束后system调用返回,不会影响父进程的运行,除非有进程间同步操作