簡體   English   中英

等待用戶輸入的進程實際發生了什么?

[英]What actually happens to a process waiting for user input?

我想知道等待用戶輸入的進程實際發生了什么。 可以說,在我的代碼中,我調用了scanf()來從控制台讀取用戶輸入。 它將在內部調用read()系統調用。 但在這種情況下,在用戶提供任何輸入之前,沒有數據可供讀取。 那么我們的過程一直在睡覺嗎?

是的,它正在睡覺(至少在OS X中)。

嘗試編譯並運行以下C程序:

#include <stdio.h>

int main() {
    int x;
    puts("Enter a number:");
    if (scanf("%d",&x)) {
        printf("You entered %d\n",x);
    }
    else {
        puts("That isn't a number");
    }
    return 0;
}

啟動在控制台中運行的程序,然后打開另一個控制台並在命令行輸入ps -v 你應該看到這樣的東西:

  PID STAT      TIME  SL  RE PAGEIN      VSZ    RSS   LIM     TSIZ  %CPU %MEM COMMAND
19544 S      0:00.01   0   0      0  2463084   1596     -        0   0.0  0.0 -bash
19574 S      0:00.01   0   0      0  2454892   1568     -        0   0.0  0.0 -bash
19582 S+     0:00.00   0   0      0  2434816    676     -        0   0.0  0.0 ./a

這里,。/ ./a是程序的名稱。 STAT列中此過程的條目是S+ ,這意味着進程正在休眠( S )並且位於前台( + )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM