Các tập tin C sau đây đưa ra một kết quả không có thật khi NUL được cấp nước tập trung với nó:Detect mô tả tập tin NUL (isatty là giả mạo)
int main()
{
printf("_isatty = %d\n", _isatty(0));
}
kết quả là:
C:\Users\Edward\Dev\nulltest> test.exe < NUL
_isatty = 64
Tôi khá chắc chắn NUL (aka/dev/null) không phải là thiết bị đầu cuối! Vì vậy, tôi cần phải phát hiện theo cách khác cho dù bộ mô tả tập tin có tương ứng với NUL hay không. Số không có ý nghĩa cụ thể; Tôi nhìn thấy nó khi tôi thực sự có một thiết bị đầu cuối kèm theo.
Tôi nên làm gì? This question đề xuất sử dụng hàm sơ bộ không có giấy tờ để lấy tên cơ bản, có lẽ so sánh nó với NUL, nhưng điều đó cảm thấy ít hơn lý tưởng đối với tôi. Có cách nào tốt hơn?
P.S. Điều này sẽ giúp giải quyết this GHC bug.
Chỉ cần ra khỏi sự quan tâm (và tôi không nói rằng những gì bạn đang làm là sai): tại sao bạn quan tâm nơi đầu vào của sắp tới từ? – paxdiablo
Có nhiều ứng dụng thực hiện những việc khác nhau khi chúng phát hiện thiết bị đầu cuối. Ví dụ, nếu bạn gõ 'python', nó sẽ đi vào chế độ tương tác, nhưng 'echo' in \ "bar \" "| python 'sẽ không hiển thị bất kỳ màn hình khởi tạo nào. –
Tôi _hate_ những chương trình :-) – paxdiablo