日期:2014-05-16  浏览次数:20623 次

实验:执行不同代码时,linux进程的状态
sleep()时,进程处于什么状态? 执行代码或者等待I/O时又处于什么状态?
下面是一个不太完整的实验。

//下面代码启动后,请不停地用ps查看进程的状态
int main(){

        sleep(10);   //此时状态是"S", 即“可中断的等待”
        printf("sleep done\n");

        printf("Ready to connect non existing server\n");
        connect_server_fake_port();  //连接服务器上一个没有打开的端口,直到超时退出。 此时状态也是"S",进程处于阻塞中
        printf("done with connecting non existing server\n");

        printf("ready for for-ever loop\n");  
        while(1); //此时状态是"R", 说明进程在就绪队列中
}