[英]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.