mp3 发表于 2003-11-3 18:00:19

一个菜鸟问题 问Davidfox

能不能在解释的详细一些上一个问题和现在这个问题,我们在输出字付是有是为什么会出现在#号后,就好象
b
root.....#ca
谢谢你的帮助

djklhm 发表于 2003-11-3 20:06:11

# 是linux超级用户的提示符
就像windows下的c:>一样

davidfox 发表于 2003-11-4 10:26:11

这是父子进程的同步问题,当父进程退出时,它当然要输出shell提示符,
然后是子进程,由于父进程已经退出,所以它不会自动退出,一般都会在代码
中加上wait()系统调用,进行进程的同步。

/*test.c*/
#include <stdio.h>
#include <sched.h>

int main(void)
{
        int pid;

        setvbuf(stdout,(char*)NULL,_IONBF,0);
        putchar('a');
        printf("\n");

        pid=fork();
        if(pid==0)
        {
                printf("child\n");
                              exit();
        }
        printf("parent\n");
                wait();

        return 0;
}
/*****************************/
你试一下,是不是好了,我想应该没有提示#了,我没试,你自己
测一下把!!!!!!!!!!!!!!!!!!!!!!!!!
gcc test.c -o test
./test

mp3 发表于 2003-11-5 16:11:22

为什么父进程会先出呢,还有我前面以留了贴子,davidfox如果你看到请给我回答一下非常感谢

_z_ 发表于 2003-11-5 16:49:37

fork以后,父进程与子进程分道扬镳,分别受到调度,这种调度不是人为的,
可能是父进程先受到调度,也可能是子进程先受到调度
所以不能肯定是父进程先退出,还是子进程先退出
页: [1]
查看完整版本: 一个菜鸟问题 问Davidfox