Lệnh "make:view" không được xác định.

Gauche hỗ trợ hầu hết POSIX. 1 và các chức năng hệ thống khác phổ biến trong các biến thể Unix dưới dạng các thủ tục tích hợp

Rất nhiều triển khai Đề án cung cấp một số loại giao diện hệ thống trong các API khác nhau. Một số chỉ được gọi bằng các tên khác nhau [e. g,

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
5 hoặc
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
6 hoặc
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
7 để xóa tệp], một số thực hiện trừu tượng hơn khi giới thiệu các đối tượng Lược đồ mới. Thay vì chỉ chọn một trong các giao diện như vậy, tôi quyết định triển khai API giao diện hệ thống của Gauche thành hai lớp; . Trên hết, các API cấp cao hơn được cung cấp, có tính đến khả năng tương thích với các hệ thống hiện có

Giao diện hệ thống cấp thấp có tên

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
8name và thường tương ứng với tên gọi hệ thống. Tôi đã cố gắng giữ giao diện tương tự bất cứ khi nào hợp lý

Gauche khởi động lại cuộc gọi hệ thống sau khi nó bị gián đoạn bởi một tín hiệu theo mặc định. Xem Tín hiệu để biết chi tiết

Nếu bạn đã quen với việc lập trình hệ thống trong C, hãy xem thêm Ánh xạ C tới Lược đồ, hiển thị sự tương ứng giữa các hàm thư viện chuẩn C và thủ tục Gauche

6. 24. 1 Chấm dứt chương trình

Gauche có một số cách để tự chấm dứt [ngoài việc quay lại từ

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
9]. Quy trình
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
0 là một cách duyên dáng với tất cả các hoạt động dọn dẹp phù hợp.
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
1 và
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
2 có thể được sử dụng trong trường hợp khẩn cấp khi không thể dọn dẹp đúng cách

Hàm số. lối ra. tùy chọn [mã 0] [fmtstr #f] args …

[R7RS+] Chấm dứt quy trình hiện tại bằng mã thoát mã. Mã phải là số không hoặc số nguyên dương chính xác. Khi một chuỗi được cấp cho fmtstr, nó sẽ được chuyển đến

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
3 [xem Đầu ra], với các đối số còn lại lập luận, để tạo một thông báo tới cổng lỗi tiêu chuẩn [không phải cổng lỗi hiện tại; xem Hoạt động của cổng thông thường]

Trên thực tế, thủ tục xuất cảnh phức tạp hơn một chút. Các bước thoát chính xác như sau

  1. Giá trị của tham số
    [cond-expand
     [gauche.sys.unsetenv
       .. use sys-unsetenv or sys-clearenv .. ]
     [else
       .. fallback code ...]]
    
    4 được kiểm tra. Nếu nó không phải là
    [cond-expand
     [gauche.sys.unsetenv
       .. use sys-unsetenv or sys-clearenv .. ]
     [else
       .. fallback code ...]]
    
    5, giá trị được gọi là một thủ tục với ba đối số. mã, fmtstr và danh sách các đối số còn lại. Đây là quy trình mặc định của
    [cond-expand
     [gauche.sys.unsetenv
       .. use sys-unsetenv or sys-clearenv .. ]
     [else
       .. fallback code ...]]
    
    4 in thông báo tới cổng lỗi tiêu chuẩn. Nếu xảy ra lỗi trong trình xử lý thoát, nó sẽ bị ghi lại và loại bỏ. Các ngoại lệ khác không bị bắt
  2. Các luồng gió động đang hoạt động được gọi ra sau. Bất kỳ ngoại lệ nào được đưa ra sau khi thunks bị bắt và bị loại bỏ
  3. Trình xử lý dọn dẹp đã đăng ký qua C API
    [cond-expand
     [gauche.sys.unsetenv
       .. use sys-unsetenv or sys-clearenv .. ]
     [else
       .. fallback code ...]]
    
    7 được gọi. Chúng thường chịu trách nhiệm cho các công việc dọn dẹp ngầm cho mỗi ứng dụng nhúng Gauche. Từ thế giới Đề án không có nhiều điều để quan tâm
  4. Các cổng vùng đệm đầu ra chưa được đóng bị xóa
  5. Quá trình thoát với mã dưới dạng mã thoát, thông qua
    [cond-expand
     [gauche.sys.unsetenv
       .. use sys-unsetenv or sys-clearenv .. ]
     [else
       .. fallback code ...]]
    
    8

Cơ chế

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
4 cho phép ứng dụng kết nối hoạt động thoát của nó. Lưu ý rằng nó không dành cho các công việc dọn dẹp đơn giản; .
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
4 được sử dụng cụ thể hơn ngay khi thoát khỏi ứng dụng. Ví dụ: các ứng dụng GUI có thể muốn đăng hộp thoại thay vì in ra thiết bị lỗi chuẩn

Vì lý do này, mã thư viện không nên thay đổi

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
4;

Một trường hợp hữu ích khác là khi bạn muốn gọi mã của bên thứ ba, mã này sẽ gọi

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
0 bên trong. Trong trường hợp đó, bạn có thể trao đổi
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
4 để lấy một ngoại lệ không có lỗi trong khi gọi mã của bên thứ ba. Ngoại lệ không có lỗi không bị phát hiện trong
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
0, làm gián đoạn các bước được giải thích ở trên một cách hiệu quả. [Tuy nhiên, các phần sau của trình xử lý động được xử lý giống như trường hợp xử lý ngoại lệ thông thường. ] Sau đó, mã ứng dụng của bạn có thể ghi lại ngoại lệ. Bạn có thể sử dụng
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
58 để hoán đổi
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
4 một cách linh hoạt và an toàn theo luồng [xem Tham số]

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
5

Nói chung, nên tránh gọi

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
0 trong khi các luồng khác đang chạy, vì nó chỉ tua lại các trình xử lý động đang hoạt động trong các luồng đang gọi và các luồng khác sẽ bị giết đột ngột. Nếu bạn phải làm như vậy vì một số lý do, bạn có thể sử dụng
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
4 để thông báo cho các luồng khác rằng ứng dụng đang thoát. [Không có cách chung nào và Gauche thậm chí không có danh sách tất cả các luồng đang chạy; đó là trách nhiệm của ứng dụng]

Lưu ý về thiết kế. Một số ngôn ngữ tích hợp xử lý thoát vào xử lý ngoại lệ, coi thoát là một loại ngoại lệ. Đó là một ý tưởng hấp dẫn, đến nỗi chúng tôi đã thử nó. Nó không hoạt động tốt ở Gauche;

Hàm số. trình xử lý thoát. trình xử lý mới tùy chọn

Khi được gọi mà không có đối số, trả về giá trị của trình xử lý thoát hiện tại. Khi được gọi với một đối số, hãy đặt trình xử lý mới làm giá trị của trình xử lý thoát và trả về giá trị trước đó của trình xử lý thoát. trình xử lý mới phải là một thủ tục có ba đối số, hoặc

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
5

Giá trị của trình xử lý thoát là dành riêng cho luồng và giá trị mặc định được kế thừa từ giá trị của trình xử lý thoát hiện tại của luồng chính.

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
4 có thể được sử dụng như thể nó là một tham số trong macro
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
58 [xem Tham số]

Hàm số. mã thoát sys

[POSIX] Chấm dứt quy trình hiện tại bằng mã thoát mã. Mã phải là số không hoặc số nguyên dương chính xác. Thủ tục này gọi trực tiếp

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
26. Không có dọn dẹp được thực hiện. Đầu ra tệp chưa được chỉnh sửa bị loại bỏ

Hàm số. sys-abort

[POSIX] Gọi hủy bỏ POSIX[]. Điều này thường chấm dứt quá trình đang chạy và kết xuất lõi. Không có dọn dẹp được thực hiện

6. 24. 2 Đối số dòng lệnh

Cách được khuyến nghị để nhận các đối số dòng lệnh được chuyển đến tập lệnh Lược đồ là đối số cho thủ tục

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
9 [xem Viết tập lệnh Lược đồ]. Để thuận tiện, có một số cách để truy cập vào các đối số dòng lệnh trên toàn cầu

Lưu ý rằng không phải lúc nào mã Lược đồ cũng có thể được gọi với đối số dòng lệnh—ví dụ: tập lệnh lược đồ được nhúng trong ứng dụng có thể hoàn toàn không có khái niệm về dòng lệnh. Đó là lý do tại sao đối số

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
9 được ưa thích hơn, vì nó là một giao diện rõ ràng;

Điều đó nói rằng, đây là cách truy cập các đối số dòng lệnh

Tham số. dòng lệnh

[R7RS+][SRFI-193] Khi được gọi mà không có đối số, nó trả về một danh sách các đối số dòng lệnh, bao gồm tên chương trình trong phần tử đầu tiên, dưới dạng danh sách các chuỗi

Khi Gauche được sử dụng làm ngôn ngữ nhúng, ứng dụng có quyền tùy ý thiết lập tham số này. Nếu ứng dụng không làm gì, tham số này sẽ có một danh sách trống. Khi bạn sử dụng tham số này trong thư viện, bạn phải xử lý tình huống đó

Khi được gọi với một đối số, một danh sách chuỗi, nó sẽ trở thành giá trị mới của tham số. Bạn có thể sử dụng

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
58 để chuyển giá trị của
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
71 một cách linh hoạt [xem Tham số]. Lưu ý rằng R7RS chỉ định nghĩa đối số 0
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
71

Tham số. tập kịch bản

[SRFI-193] Trong khi chương trình Lược đồ được chạy dưới dạng tập lệnh, tham số này giữ đường dẫn tuyệt đối của tệp nguồn Lược đồ đang được chạy. Chạy dưới dạng tập lệnh có nghĩa là nó được chuyển dưới dạng tệp tập lệnh tới

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
73 hoặc tệp được trực tiếp
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
74 từ REPL cấp cao nhất

Nếu chức năng này được gọi từ ngữ cảnh bên ngoài thực thi tập lệnh, thì

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
5 được trả về

Biến đổi. *tên chương trình*Biến. *argv*

Các biến này được liên kết với tên chương trình và danh sách các đối số dòng lệnh, tương ứng. Trong các tập lệnh Gauche được gọi bởi lệnh

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
73,
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
77 thường là tên của tập lệnh, như được đặt cho
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
73. Khi
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
73 được gọi một cách tương tác,
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
77 chứa một chuỗi có độ dài bằng 0
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
71 và
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
72 là một danh sách trống

Các biến này tồn tại trong mô-đun

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
73

Chúng chủ yếu được lưu giữ để tương thích ngược. Những tên này tương thích với STk, nhưng việc triển khai Đề án khác sử dụng các quy ước khác nhau. Tham số

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
71 ở trên được ưu tiên

Khi Gauche được sử dụng làm ngôn ngữ nhúng, ứng dụng máy chủ có toàn quyền thiết lập các biến này. Nói chung, bạn không thể tin rằng các biến đó tồn tại. Đó là một lý do khác mà bạn nên tránh sử dụng chúng

6. 24. 3 Điều tra môi trường

Hàm số. tên sys-getenv

[POSIX] Trả về giá trị của tên biến môi trường dưới dạng chuỗi hoặc

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
5 nếu biến môi trường không được xác định

Đối với mã di động, bạn có thể muốn sử dụng

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
76 của SRFI-98 [xem Truy cập các biến môi trường], cũng có trong R7RS

Ghi chú. Hầu hết các hệ thống không đảm bảo độ an toàn của luồng là

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
77 trong khi môi trường đang được sửa đổi;

Hàm số. môi trường hệ thống

Trả về môi trường hiện tại dưới dạng danh sách các chuỗi. Mỗi chuỗi là một dạng của

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
78, trong đó
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
79 là tên của biến môi trường và
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
60 là giá trị của nó.
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
79 không bao giờ chứa ký tự
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
62. Điều này hữu ích khi bạn muốn lấy tất cả các biến môi trường của quy trình hiện tại. Sử dụng
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
63 nếu bạn muốn truy vấn một biến môi trường cụ thể

Hàm số. sys-environ->alist. tùy chọn envlist

Một thủ tục thuận tiện cho

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
64. Khi danh sách các chuỗi môi trường [như những gì mà
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
64 trả về] được cấp cho envlist, quy trình này sẽ tách tên và giá trị của từng biến môi trường và trả về một danh sách liên kết

Khi envlist bị bỏ qua, thủ tục này gọi

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
64 để lấy các biến môi trường hiện tại

Đối với mã di động, bạn có thể muốn sử dụng

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
67 của SRFI-98 [xem Truy cập các biến môi trường], cũng có trong R7RS

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
4

Hàm số. giá trị tên sys-setenv. chức năng ghi đè tùy chọn. tên sys-putenv=giá trị

sys-setenv chèn tên biến môi trường với giá trị giá trị. Cả tên và giá trị phải là một chuỗi. Nếu ghi đè đối số tùy chọn là

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
5 [mặc định], môi trường sẽ không bị ảnh hưởng nếu một biến có tên đã tồn tại. Nếu ghi đè là đúng, biến được ghi đè

Đối với

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
69, bạn phải cung cấp một chuỗi có dạng
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
78, nghĩa là nối tên và giá trị với
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
62. Nếu biến môi trường có cùng tên tồn tại, nó sẽ bị ghi đè

Các API này phản ánh POSIX

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
92 và
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
93. Tuy nhiên, không giống như
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
93, việc sửa đổi chuỗi được chuyển đến
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
69 sau đó sẽ không ảnh hưởng đến môi trường

Các quy trình này chỉ khả dụng khi tồn tại mã định danh tính năng

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
96. Sử dụng
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
97 [xem Tính năng có điều kiện] để kiểm tra tính khả dụng của chúng

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]

Các quy trình này an toàn theo luồng khi bạn truy cập và sửa đổi môi trường thông qua API Gauche

Hàm số. sys-unsetenv nameChức năng. sys-clearenv

Xóa biến môi trường có tên [

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
98] hoặc tất cả các biến môi trường.
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
99 rất hữu ích khi bạn cần chạy quy trình con, nhưng bạn không thể tin tưởng vào môi trường kế thừa

Các quy trình này chỉ khả dụng khi có mã định danh tính năng

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
400. Sử dụng
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
97 [xem Tính năng có điều kiện] để kiểm tra tính khả dụng của chúng

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]

SRFI-98 [xem phần Truy cập các biến môi trường] cũng định nghĩa một tập hợp con các quy trình trên để truy cập các biến môi trường. Các chương trình di động có thể muốn sử dụng chúng thay thế

Hàm số. phiên bản gaucheChức năng. Chức năng kiến ​​trúc gauche. gauche-library-directoryFunction. gauche-architecture-directoryFunction. gauche-site-library-directoryFunction. gauche-site-architecture-directory

Các hàm này trả về một chuỗi cho biết thông tin về chính thời gian chạy Gauche

Hàm số. phiên bản-alist

[SRFI-176] Trả về danh sách các thông tin thời gian chạy khác nhau. Thông tin giống với thông tin được hiển thị với

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
402

Hàm số. sys-có sẵn-bộ xử lý

Trả về số lượng bộ xử lý khả dụng trên nền tảng đang chạy. Giá trị trả về luôn là một số nguyên chính xác dương. Nếu Gauche không thể lấy thông tin, 1 được trả về

Tuy nhiên, nếu một biến môi trường

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
403 được xác định và giá trị của nó có thể được hiểu là một số nguyên dương, thì giá trị đó sẽ được trả về bất kể phần cứng/HĐH nói gì

6. 24. 4 Hệ thống tập tin

Các cuộc gọi hệ thống xử lý các hệ thống tập tin. Xem thêm Tiện ích hệ thống tệp xác định API cấp cao trên các quy trình được mô tả tại đây

6. 24. 4. 1 thư mục

Xem thêm Tiện ích thư mục cho API cấp cao

Hàm số. đường dẫn sys-readdir

đường dẫn phải là một chuỗi biểu thị tên đường dẫn hợp lệ của một thư mục hiện có. Hàm này trả về một danh sách các chuỗi của các mục nhập thư mục. Danh sách trả về không được sắp xếp. Một lỗi được báo hiệu nếu đường dẫn không tồn tại hoặc không phải là một thư mục

Hàm số. mô hình toàn cầu. trình sắp xếp thư mục tách khóaChức năng. mẫu sys-glob. bộ phân loại thư mục tách khóa

Cung cấp chức năng Unix global[3] truyền thống;

Tính năng này từng là một trình bao bọc của hàm

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
404 do hệ thống cung cấp, do đó nó được đặt tên là
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
405. Tuy nhiên, kể từ phiên bản Gauche 0. 8. 12, nó đã được triển khai lại trong Scheme bên trên các lệnh gọi hệ thống khác, để khắc phục sự không tương thích giữa các nền tảng và để có cơ hội bổ sung nhiều chức năng hơn. Vì vậy, chúng tôi đổi tên nó thành
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
404. Tên cũ
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
405 được giữ để tương thích, nhưng các chương trình mới nên sử dụng
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
404

Đối số mẫu có thể là một mẫu hình cầu duy nhất hoặc danh sách các mẫu hình cầu. Nếu một danh sách được đưa ra, các tên đường dẫn khớp với bất kỳ mẫu nào sẽ được trả về. Nếu bạn là người dùng unix, bạn đã biết nó hoạt động như thế nào

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
5

Không giống như quả cầu của shell, nếu không có tên đường dẫn phù hợp, thì ____ 6409 sẽ được trả về

Theo mặc định, kết quả được sắp xếp bằng thủ tục

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
410 tích hợp sẵn [xem Sắp xếp và hợp nhất]. Bạn có thể chuyển thủ tục thay thế cho đối số sắp xếp; . Nó cũng có thể là
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
5, trong trường hợp đó, kết quả không được sắp xếp

Trên thực tế, toàn cầu hóa là một công cụ rất hữu ích để tìm kiếm cấu trúc dữ liệu phân cấp nói chung, không giới hạn trong các hệ thống tệp. Vì vậy, hàm

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
404 được triển khai tách biệt với hệ thống tệp. Sử dụng các đối số từ khóa, bạn có thể toàn cầu hóa từ bất kỳ loại cấu trúc dữ liệu dạng cây nào. Chỉ là các giá trị mặc định của chúng được đặt để xem các hệ thống tệp

Đối số dấu phân cách phải là một bộ ký tự và được sử dụng để chia mẫu thành các thành phần. Mặc định của nó là

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
413. Nó không được sử dụng để tên đường dẫn thực tế để phù hợp

Thư mục là một thủ tục đi qua cấu trúc dữ liệu. Nó được gọi với năm đối số

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
2

proc là một thủ tục có hai đối số. Thư mục nên gọi proc với mọi nút trong nút gốc có tên thành phần khớp với biểu thức chính quy, chuyển qua giá trị gốc giống như

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
414. Nó sẽ trả về giá trị cuối cùng được trả về bởi proc. Ví dụ: nếu
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
415 được cấp cho proc và
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
409 được cấp cho hạt giống, thì giá trị trả về của thư mục là danh sách các nút khớp với biểu thức chính quy

Biểu diễn của một nút tùy thuộc vào việc triển khai thư mục. Nó có thể là một tên đường dẫn hoặc một số loại đối tượng hoặc bất cứ thứ gì. Thủ tục

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
404 không quan tâm nó là gì;

Đối số gốc về cơ bản là một nút và thư mục đi qua các phần tử con của nó để tìm kết quả khớp. Ngoại lệ là cuộc gọi ban đầu của thư mục— lúc đầu

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
404 không biết gì về mỗi nút. Khi ________ 6404 cần khớp với một đường dẫn tuyệt đối, nó sẽ vượt qua
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
422 và khi ________ 6404 cần khớp với một đường dẫn tương đối, nó sẽ vượt qua
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
5, làm giá trị gốc ban đầu

Đối số regrec được sử dụng để lọc các nút con. Nó phải được khớp với tên thành phần của đứa trẻ, không bao gồm tên thư mục của nó. Trong trường hợp đặc biệt, nó có thể là ký hiệu

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
425; . g. nếu nút được biểu diễn dưới dạng tên đường dẫn, thì thư mục sẽ trả về tên đường dẫn có dấu tách thư mục ở cuối. Trong trường hợp đặc biệt, nếu nút là một giá trị boolean và biểu thức chính quy là
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
425, thì thư mục sẽ trả về nút đại diện cho nút gốc hoặc nút hiện tại, tương ứng; . g. nếu nút được biểu diễn dưới dạng tên đường dẫn, thư mục có thể trả về
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
427 và
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
428 cho những trường hợp đó

Đối số không phải lá là cờ boolean. Nếu đúng, bộ lọc sẽ loại bỏ các nút lá khỏi kết quả [e. g. chỉ bao gồm các thư mục]

Bây giờ, đây là thông số kỹ thuật chính xác của khớp mẫu toàn cầu

Mỗi mẫu hình cầu là một chuỗi để khớp với các chuỗi giống như tên đường dẫn

Chuỗi giống như tên đường dẫn là một chuỗi bao gồm một hoặc nhiều thành phần, được phân tách bằng dấu phân cách. Dấu phân cách mặc định là

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
413; . Một thành phần không thể chứa dấu phân cách và không thể là chuỗi null. Dấu phân cách liên tiếp được coi là một dấu phân cách duy nhất. Một chuỗi giống như tên đường dẫn tùy chọn bắt đầu bằng và/hoặc kết thúc bằng ký tự phân cách

Một mẫu hình cầu cũng bao gồm các thành phần và ký tự phân cách. Trong một thành phần, các ký tự/cú pháp sau đây có ý nghĩa đặc biệt

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
430

Khi nó xuất hiện ở đầu một thành phần, nó khớp với 0 hoặc nhiều ký tự ngoại trừ dấu chấm [

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
431]. Và nó sẽ không khớp nếu thành phần của chuỗi đầu vào bắt đầu bằng dấu chấm

Mặt khác, nó khớp với 0 hoặc nhiều chuỗi ký tự bất kỳ

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
432

Nếu một thành phần chỉ là

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
432, thì nó khớp với 0 hoặc nhiều thành phần khớp với
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
430. Ví dụ:
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
435 khớp với tất cả các mẫu sau

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
7

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
436

Khi nó xuất hiện ở đầu một thành phần, nó khớp với một ký tự ngoại trừ dấu chấm [

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
431]. Mặt khác, nó khớp với bất kỳ ký tự đơn nào

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
438

Chỉ định một bộ ký tự. Phù hợp với bất kỳ một trong các tập hợp. Cú pháp của ký tự giống như cú pháp bộ ký tự của Gauche [xem Bộ ký tự]. Để tương thích với toàn cầu truyền thống, ký tự

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
439 có thể được sử dụng để bổ sung cho bộ ký tự, e. g.
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
440 giống như
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
441

Hàm số. hạt giống nếp gấp toàn cầu. bộ phân loại thư mục tách khóa

Đây thực sự là một cấu trúc cấp thấp của hàm toàn cầu. Trên thực tế, toàn cầu được viết đơn giản như thế này

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
7

Ý nghĩa của mẫu, dấu tách, thư mục và bộ sắp xếp giống như đã giải thích ở trên

Đối với mỗi tên đường dẫn phù hợp với mẫu,

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
442 gọi proc với tên đường dẫn và giá trị gốc. Giá trị hạt giống ban đầu là hạt giống và giá trị Proc trả về trở thành giá trị hạt giống tiếp theo. Kết quả của lần gọi cuối cùng tới Proc trở thành kết quả của
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
442. Nếu không có tên đường dẫn phù hợp, proc sẽ không bao giờ được gọi và hạt giống được trả về

Hàm số. make-glob-fs-fold. đường dẫn gốc chính đường dẫn hiện tại

Đây là một hàm tiện ích để tạo một thủ tục phù hợp để chuyển đối số từ khóa thư mục của

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
442 và
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
404. Không có đối số, điều này trả về cùng một quy trình được sử dụng trong
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
442 và
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
404 theo mặc định

Các đối số từ khóa root-path và current-path chỉ định các đường dẫn mà

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
442 bắt đầu tìm kiếm

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
6

Xem Thống kê tệp, để kiểm tra xem đường dẫn có thực sự là thư mục không

6. 24. 4. 2 Thao tác thư mục

Hàm số. sys-xóa tên tệp

[POSIX] Nếu tên tệp là một tệp thì nó sẽ bị xóa. Trên một số hệ thống, điều này cũng có thể hoạt động trên một thư mục trống, nhưng các tập lệnh di động không nên phụ thuộc vào nó

Hàm số. đổi tên hệ thống cũ thành mới

[POSIX] Đổi tên tệp cũ thành mới. Tên mới có thể nằm trong thư mục khác với tên cũ, nhưng cả hai đường dẫn phải nằm trên cùng một thiết bị

Hàm số. sys-tmpnam

[POSIX] Tạo tên tệp được cho là duy nhất và trả về tên đó. Đây là trong POSIX, nhưng việc sử dụng nó không được khuyến khích vì rủi ro bảo mật tiềm ẩn. Sử dụng

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
449 bên dưới nếu có thể

Hàm số. mẫu sys-mkstemp

Tạo và mở một tệp có tên duy nhất và trả về hai giá trị; . Tệp được tạo độc quyền, tránh các điều kiện chủng tộc. mẫu được sử dụng làm tiền tố của tệp. Không giống như mkstemp của Unix, bạn không cần ký tự đệm. Tệp được mở để ghi và quyền của nó được đặt thành 600

Hàm số. mẫu sys-mkdtemp

Tạo một thư mục có tên duy nhất và trả về tên. mẫu được sử dụng làm tiền tố của thư mục. Không giống như mkdtemp của Unix, bạn không cần ký tự đệm. Quyền của thư mục được đặt thành 700

Hàm số. sys-link hiện có mới

[POSIX] Tạo một liên kết cứng có tên mới cho tệp hiện có

Hàm số. sys-unlink tên đường dẫn

[POSIX] Xóa tên đường dẫn. Nó không thể là một thư mục. Trả về

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
422 nếu xóa thành công hoặc
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
5 nếu tên đường dẫn không tồn tại. Một lỗi được báo hiệu khác

Có các quy trình tương tự,

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
5/
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
6 trong mô-đun
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
454, trong khi chúng gây ra lỗi khi tên đường dẫn được đặt tên không tồn tại [xem Hoạt động của tệp]

R7RS định nghĩa

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
5 mà bạn có thể muốn sử dụng trong các chương trình di động

Hàm số. sys-symlink hiện có mới

Tạo một liên kết tượng trưng có tên mới cho tên đường dẫn hiện có. Trên các hệ thống không hỗ trợ liên kết tượng trưng, ​​chức năng này không bị ràng buộc

Hàm số. đường dẫn sys-readlink

Nếu một tệp được chỉ định bởi đường dẫn là một liên kết tượng trưng, ​​​​nội dung của nó sẽ được trả về. Nếu đường dẫn không tồn tại hoặc không phải là một liên kết tượng trưng, ​​một lỗi sẽ được báo hiệu. Trên các hệ thống không hỗ trợ liên kết tượng trưng, ​​chức năng này không bị ràng buộc

Hàm số. chế độ tên đường dẫn sys-mkdir

[POSIX] Tạo tên đường dẫn thư mục với chế độ chế độ. [Lưu ý rằng chế độ được che bởi ô hiện tại; xem

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
456 bên dưới]. Thư mục mẹ của tên đường dẫn phải tồn tại và có thể ghi được theo quy trình. Để tạo các thư mục trung gian cùng một lúc, hãy sử dụng
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
457 trong
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
454 [Tiện ích thư mục]

Hàm số. tên đường dẫn sys-rmdir

[POSIX] Xóa tên đường dẫn thư mục. Thư mục phải trống. Để xóa một thư mục cùng với nội dung của nó, hãy sử dụng

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
459 trong
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
454 [Tiện ích thư mục]

Hàm số. sys-umask. chế độ tùy chọn

[POSIX] Đặt cài đặt ô về chế độ. Trả về cài đặt ô trước đó. Nếu chế độ bị bỏ qua hoặc

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
5, chỉ cần trả về ô hiện tại mà không thay đổi nó. Xem
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
462 để biết thêm chi tiết

6. 24. 4. 3 tên đường dẫn

Xem thêm Tiện ích tên đường dẫn, để biết API cấp cao

Hàm số. tên đường dẫn sys-normalize-pathname. key tuyệt đối mở rộng canonicalize

Chuyển đổi tên đường dẫn theo cách được chỉ định bởi các đối số từ khóa. Có thể chỉ định nhiều hơn một đối số từ khóa

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
463

Nếu đối số từ khóa này được đưa ra và đúng, và tên đường dẫn không phải là tên đường dẫn tuyệt đối, nó sẽ được chuyển đổi thành tên đường dẫn tuyệt đối bằng cách thêm thư mục làm việc hiện tại vào trước tên đường dẫn

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
464

Nếu đối số từ khóa này được đưa ra và đúng, và tên đường dẫn bắt đầu bằng '

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
465', thì nó được mở rộng như sau

  • Nếu tên đường dẫn được bao gồm hoàn toàn bởi “
    [cond-expand
     [gauche.sys.unsetenv
       .. use sys-unsetenv or sys-clearenv .. ]
     [else
       .. fallback code ...]]
    
    465” hoặc bắt đầu bằng “
    [cond-expand
     [gauche.sys.unsetenv
       .. use sys-unsetenv or sys-clearenv .. ]
     [else
       .. fallback code ...]]
    
    467”, thì ký tự “
    [cond-expand
     [gauche.sys.unsetenv
       .. use sys-unsetenv or sys-clearenv .. ]
     [else
       .. fallback code ...]]
    
    465” được thay thế cho tên đường dẫn của thư mục chính của người dùng hiện tại
  • Mặt khác, các ký tự theo sau '
    [cond-expand
     [gauche.sys.unsetenv
       .. use sys-unsetenv or sys-clearenv .. ]
     [else
       .. fallback code ...]]
    
    465' cho đến '
    [cond-expand
     [gauche.sys.unsetenv
       .. use sys-unsetenv or sys-clearenv .. ]
     [else
       .. fallback code ...]]
    
    470' hoặc phần cuối của tên đường dẫn được lấy làm tên người dùng và thư mục chính của người dùng được thay thế cho nó. Nếu không có người dùng như vậy, một lỗi sẽ được báo hiệu
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
471

Cố gắng xóa các thành phần tên đường dẫn “______6431” và “

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
473”. Việc giải thích tên đường dẫn được thực hiện hoàn toàn ở cấp độ kết cấu, tôi. e. nó không truy cập hệ thống tệp để xem chuyển đổi phản ánh các tệp thực. Nó có thể là một vấn đề nếu có một liên kết tượng trưng đến thư mục khác trong đường dẫn

Hàm số. sys-basename tên đường dẫn Chức năng. tên đường dẫn sys-dirname

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
474 trả về tên cơ sở, đó là thành phần cuối cùng của tên đường dẫn.
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
475 trả về các thành phần của tên đường dẫn nhưng thành phần cuối cùng. Nếu tên đường dẫn có đuôi '
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
470', nó sẽ bị bỏ qua

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
9

Các hàm này không kiểm tra xem tên đường dẫn có thực sự tồn tại hay không

Một số trường hợp biên

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
40

Ghi chú. Hành vi trên giống như của Perl's

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
477 và
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
478. Trên một số hệ thống, lệnh
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
477 có thể trả về
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
427 cho đối số
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
427 và
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
482 cho đối số
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
482

Hàm số. tên đường dẫn sys-realpath

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
484 trả về một tên đường dẫn tuyệt đối của tên đường dẫn không bao gồm “
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
431”, “
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
473” hoặc các liên kết tượng trưng. Nếu tên đường dẫn không tồn tại, nó bao gồm một liên kết tượng trưng lơ lửng hoặc người gọi không có đủ quyền để truy cập vào đường dẫn, một lỗi sẽ được báo hiệu

Ghi chú. chức năng POSIX

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
487 được biết là không an toàn, vì vậy Gauche tránh sử dụng nó và thực hiện
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
484 theo cách riêng của nó

Hàm số. sys-tmpdir

Trả về tên thư mục mặc định phù hợp để đặt các tệp tạm thời

Trên các hệ thống giống Unix, biến môi trường

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
489 và
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
490 được kiểm tra đầu tiên, sau đó quay trở lại
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
491

Trên các hệ thống gốc Windows, nó sử dụng API Windows

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
492. Nó kiểm tra các biến môi trường
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
490,
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
494 và
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
495 theo thứ tự này và quay trở lại thư mục hệ thống Windows

Trên cả hai nền tảng, tên đường dẫn được trả về có thể không tồn tại hoặc có thể không ghi được trong quá trình gọi

Nói chung, các chương trình và thư viện người dùng được khuyến nghị sử dụng

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
496 [xem Tiện ích thư mục] để thay thế;

6. 24. 4. 4 Thống kê tệp

Xem thêm Tiện ích thuộc tính tệp để biết API cấp cao

Hàm số. File tồn tại?

[Tệp R7RS] Trả về true nếu đường dẫn tồn tại

Hàm số. tập tin là thường xuyên? . tập tin là thư mục?

Trả về true nếu đường dẫn là một tệp thông thường hoặc là một thư mục tương ứng. Chúng trả về false nếu đường dẫn hoàn toàn không tồn tại

Lớp dựng sẵn.

Một đối tượng đại diện cho

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
498, thuộc tính của một mục trong hệ thống tệp. Nó có các khe chỉ đọc sau

Biến thể hiện của. loại hình

Một biểu tượng đại diện cho loại tập tin

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
499a tệp thông thường_______000a thư mục
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
01a ký tự thiết bị
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
02a thiết bị khối
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
03a fifo
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
04a liên kết tượng trưng
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
05a ổ cắm

Nếu loại tệp không thuộc loại nào ở trên, thì trả về

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
5

Ghi chú. Một số hệ điều hành không có loại tệp

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
05 và trả về
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
03 cho các tệp ổ cắm. Các chương trình di động nên kiểm tra cả hai khả năng để xem tệp đã cho có phải là ổ cắm không

Biến thể hiện của. uốn

Một số nguyên chính xác cho các bit quyền của

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
498. Nó giống như 9 bit thấp hơn của khe "chế độ";

Biến thể hiện của. modeInstance Biến của. inoInstance Biến của. biến devInstance của. rdevInstance Biến của. nlinkInstance Biến của. uidInstance Biến của. gidInstance Biến của. kích thước

Một số nguyên chính xác cho những thông tin của

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
498

Một số giây kể từ Unix Epoch cho những thông tin của

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
498

Biến thể hiện của. atimInstance Biến của. mtimInstance Biến của. ctim

Dấu thời gian được biểu thị trong đối tượng

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
12 [xem Thời gian]. Nếu hệ thống hỗ trợ nó, điều này cho phép độ chính xác lên đến nano giây

Hàm số. đường dẫn sys-statChức năng. sys-fstat port-or-fd

[POSIX] Trả về một đối tượng đường dẫn

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
12 hoặc tệp cơ bản của cổng-hoặc-fd, có thể là một cổng hoặc bộ mô tả tệp số nguyên chính xác dương, tương ứng

Nếu đường dẫn là một liên kết tượng trưng, ​​​​chỉ số của tệp mà liên kết trỏ tới được trả về từ

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
14

Nếu port-or-fd không được liên kết với một tệp, thì

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
15 trả về
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
5

Hàm số. đường dẫn sys-lstat

Giống như

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
14, nhưng nó trả về chỉ số của liên kết tượng trưng nếu đường dẫn là liên kết tượng trưng

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
41

Hàm số. sys-stat->mode statFunction. sys-stat->ino statFunction. sys-stat->dev statFunction. sys-stat->rdev statFunction. sys-stat->nlink statFunction. sys-stat->size statFunction. sys-stat->uid statFunction. sys-stat->gid statFunction. sys-stat->thống kê loại tệp

không dùng nữa. Sử dụng

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
18 để truy cập thông tin của đối tượng
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
12

Hàm số. tên đường dẫn truy cập sys amode

[POSIX] Trả về giá trị boolean cho biết liệu quyền truy cập tên đường dẫn có được phép trong amode hay không. Quy trình này báo hiệu lỗi nếu được sử dụng trong chương trình suid/sgid [xem ghi chú bên dưới]. amode có thể là sự kết hợp [logic hoặc] của các cờ được xác định trước sau đây

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
20

Kiểm tra xem tên đường dẫn có thể đọc được bởi người dùng hiện tại không

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
21

Kiểm tra xem tên đường dẫn có thể ghi được bởi người dùng hiện tại không

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
22

Kiểm tra xem tên đường dẫn có thể thực thi được không [hoặc có thể tìm kiếm được trong trường hợp tên đường dẫn là một thư mục] bởi người dùng hiện tại

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
23

Kiểm tra xem tên đường dẫn có tồn tại hay không, bất kể quyền truy cập của tên đường dẫn. [Nhưng bạn cần có quyền truy cập các thư mục chứa tên đường dẫn]

Ghi chú. Access[2] được biết là một lỗ hổng bảo mật nếu được sử dụng trong chương trình suid/sgid để kiểm tra đặc quyền truy cập tệp của người dùng thực

Hàm số. Chế độ đường dẫn sys-chmodChức năng. chế độ sys-fchmod port-or-fd

Thay đổi chế độ của tệp có tên đường dẫn hoặc tệp đã mở được chỉ định bởi port-or-fd thành chế độ. chế độ phải là một số nguyên dương nhỏ có 9 bit thấp hơn chỉ định quyền kiểu POSIX

Hàm số. sys-chown đường dẫn chủ sở hữu-id nhóm-id

Thay đổi chủ sở hữu và/hoặc nhóm của tệp có tên đường dẫn tương ứng thành chủ sở hữu-id và nhóm-id. id chủ sở hữu và id nhóm phải là một số nguyên chính xác. Nếu một trong hai là -1, thì quyền sở hữu tương ứng không bị thay đổi

Thay đổi thời gian truy cập và thời gian sửa đổi của tệp thành atime và mtime tương ứng. Các đối số có thể là

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
5 [cho biết thời gian hiện tại],
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
422 [không thay đổi], một số thực [số giây từ Epoch] hoặc đối tượng
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
12 [Xem Thời gian]

Xem thêm

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
27 [xem Thao tác với tệp]

6. 24. 4. 5 Các thao tác với tệp khác

Hàm số. sys-chdir dir

[POSIX] Một giao diện tới

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
28. Xem thêm
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
29 [xem Tiện ích thư mục]

Hàm số. sys-ống. phím [đệm. hàng]

[POSIX] Tạo một đường ống và trả về hai cổng. Cổng trả về đầu tiên là cổng đầu vào và cổng thứ hai là cổng đầu ra. Dữ liệu đưa vào cổng đầu ra có thể được đọc từ cổng đầu vào

Bộ đệm có thể là

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
30,
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
31 hoặc
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
32 và chỉ định chế độ đệm của các cổng được mở trên đường ống. Xem Cổng tệp, để biết chi tiết về chế độ đệm. Chế độ mặc định là đủ cho các trường hợp điển hình

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
42

Ghi chú. giá trị trả về được thay đổi từ phiên bản 0. 3. 15, trong đó

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
33 trả về danh sách hai cổng

Hàm số. chế độ đường dẫn sys-mkfifo

[POSIX] tạo một fifo [ống có tên] với đường dẫn tên và chế độ chế độ. Chế độ phải là một số nguyên dương chính xác để biểu thị chế độ tệp

Hàm số. sys-isatty port-or-fd

[POSIX] port-or-fd có thể là một cổng hoặc một bộ mô tả tệp số nguyên. Trả về

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
422 nếu cổng được kết nối với bàn điều khiển, ngược lại là
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
5

Hàm số. sys-ttyname port-or-fd

[POSIX] port-or-fd có thể là một cổng hoặc một bộ mô tả tệp số nguyên. Trả về tên của thiết bị đầu cuối được kết nối với cổng hoặc

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
5 nếu cổng không được kết nối với thiết bị đầu cuối

[POSIX] Cắt một tệp thông thường được đặt tên theo đường dẫn hoặc được tham chiếu bởi cổng hoặc fd thành kích thước byte độ dài. Nếu tệp lớn hơn byte độ dài, dữ liệu bổ sung sẽ bị loại bỏ. Nếu tệp nhỏ hơn thế, số 0 được đệm

6. 24. 5 Nhóm và người dùng Unix

nhóm Unix

Lớp dựng sẵn.

Thông tin nhóm Unix. Có các khe sau

Biến thể hiện của. Tên

Tên nhóm

Biến thể hiện của. gid

Id nhóm

Biến thể hiện của. mật khẩu

Mật khẩu nhóm

Biến thể hiện của. mem

Danh sách tên người dùng trong nhóm này

Hàm số. sys-getgrgid gidFunction. tên hệ thống-getgrnam

[POSIX] Trả về đối tượng

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
12 từ id nhóm số nguyên gid hoặc tên nhóm tương ứng. Nếu nhóm được chỉ định không tồn tại,
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
5 được trả về

Hàm số. sys-gid->tên nhóm gidFunction. sys-group-name->gid name

Chức năng tiện lợi để chuyển đổi giữa id nhóm và tên nhóm

người dùng Unix

Lớp dựng sẵn.

Thông tin người dùng Unix. Có các khe sau

Biến thể hiện của. Tên

Tên tài khoản

Biến thể hiện của. uid

Tên người dùng

Biến thể hiện của. gid

Id nhóm chính của người dùng

Biến thể hiện của. mật khẩu

Mật khẩu [được mã hóa] của người dùng. Nếu hệ thống sử dụng tệp mật khẩu bóng tối, bạn chỉ nhận được chuỗi tối nghĩa như "x"

Biến thể hiện của. địa chất

lĩnh vực địa chất

Biến thể hiện của. thư mục

Thư mục chính của người dùng

Biến thể hiện của. vỏ bọc

Vỏ đăng nhập của người dùng

Biến thể hiện của. lớp

Lớp người dùng [chỉ khả dụng trên một số hệ thống]

Hàm số. sys-getpwuid uidFunction. tên hệ thống-getpwnam

[POSIX] Trả về đối tượng

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
12 từ id người dùng số nguyên uid hoặc tên người dùng tương ứng. Nếu người dùng được chỉ định không tồn tại,
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
5 được trả về

Hàm số. sys-uid->tên người dùng uidFunction. sys-user-name-> tên uid

Các chức năng tiện lợi để chuyển đổi giữa id người dùng và tên người dùng

mã hóa mật khẩu

Hàm số. muối khóa sys-crypt

Đây là giao diện của

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
41. Khóa và muối phải là một chuỗi và một chuỗi được mã hóa được trả về. Trên các hệ thống không có sẵn
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
41, gọi chức năng này sẽ báo lỗi

Quy trình này chỉ dành cho mã cần kiểm tra mật khẩu đối với cơ sở dữ liệu mật khẩu của hệ thống. Nếu bạn đang tự xây dựng cơ sở dữ liệu người dùng, bạn phải sử dụng mô-đun

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
43 [xem Băm mật khẩu] thay vì quy trình này

6. 24. 6 ngôn ngữ

Hàm số. ngôn ngữ danh mục sys-setlocale

[POSIX] Đặt/lấy ngôn ngữ của danh mục thành ngôn ngữ bản địa. danh mục phải là một số nguyên chính xác; . ngôn ngữ phải là tên ngôn ngữ chuỗi hoặc

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
5 nếu bạn chỉ đang truy vấn ngôn ngữ hiện tại

Trả về tên ngôn ngữ khi thành công hoặc

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
5 nếu hệ thống không thể thay đổi ngôn ngữ. Nếu bạn chuyển
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
5 đến ngôn ngữ, nó sẽ trả về tên ngôn ngữ hiện tại mà không thay đổi nó

Biến đổi. LC_ALLBiến. LC_COLLATEBiến. LC_CTYPEBiến. Biến LC_MONETARY. LC_NUMERIC

Các biến được xác định trước cho giá trị danh mục có thể có của

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
47

Hàm số. sys-localeconv

[POSIX] Trả về danh sách liên kết gồm nhiều thông tin khác nhau để định dạng số ở ngôn ngữ hiện tại

Một phiên ví dụ. Nó có thể khác nhau trên cài đặt hệ thống của bạn

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
43

6. 24. 7 tín hiệu

Gauche có thể gửi tín hiệu của hệ điều hành đến các quy trình khác [bao gồm cả chính nó] và có thể xử lý các tín hiệu đến

Trong môi trường đa luồng, tất cả các luồng chia sẻ bộ xử lý tín hiệu và mỗi luồng có mặt nạ tín hiệu riêng. Xem Tín hiệu và chủ đề, để biết chi tiết

Khi lệnh gọi hệ thống bị gián đoạn bởi tín hiệu và lập trình viên xác định trình xử lý cho tín hiệu không chuyển điều khiển sang ngữ cảnh khác, lệnh gọi hệ thống sẽ được bắt đầu lại sau khi trình xử lý trở về theo mặc định

Dưới đây là một số cuộc gọi không được bắt đầu lại đơn giản do gián đoạn tín hiệu

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
48

Điều này có thể được gọi thông qua

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
49,
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
50 hoặc thậm chí ngầm khi tệp cơ bản bị đóng. Khi một tín hiệu làm gián đoạn cuộc gọi này, fd đã qua không còn được sử dụng. Chỉ cần khởi động lại nó có thể là một cuộc đua nếu một chủ đề khác chỉ lấy fd

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
51

Điều này được gọi thông qua

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
52. Khi
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
51 trả về
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
54, newfd không còn được sử dụng và một số luồng khác có thể lấy nó trước khi khởi động lại

________ 055 ________ 056

Các cuộc gọi này cho biết thời gian còn lại khi chúng bị gián đoạn. Chúng tôi khởi động lại chúng với thời gian còn lại đó, không phải đối số ban đầu, để tổng thời gian ngủ sẽ gần với thời gian đã cho ban đầu

Trên nền tảng gốc của Windows, các tín hiệu không hoạt động ngoại trừ một số hỗ trợ hạn chế của

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
57

6. 24. 7. 1 Tín hiệu và bộ tín hiệu

Mỗi tín hiệu được gọi bằng số tín hiệu của nó [một số nguyên nhỏ] được xác định trên hệ điều hành cơ bản. Các biến được xác định trước cho số tín hiệu của hệ thống. Số tín hiệu của hệ thống có thể phụ thuộc vào kiến ​​trúc, vì vậy bạn nên sử dụng các biến đó thay vì sử dụng số nguyên bằng chữ

Biến đổi. SIGABRTBiến. Biến SIGALRM. Biến SIGCHLD. Biến SIGCONTV. SIGFPEVBiến. SIGHUPBiến. SIGILLBiến. SIGINTVBiến. SIGKILLBiến. SIGPIPEVBiến. SIGQUITBiến. SIGSEGVBiến. SIGSTOPBiến. Biến SIGTERM. Biến SIGTSTP. SIGTTINBiến. SIGTTOUVBiến. Biến SIGUSR1. SIGUSR2

Các biến này được liên kết với số tín hiệu của tín hiệu POSIX

Biến đổi. SIGTRAPV Biến. SIGIOTVBiến. SIGBUSBiến. SIGSTKFLTVBiến. SIGURGBiến. Biến SIGXCPU. Biến SIGXFSZ. Biến SIGVTALRM. SIGPROFBiến. SIGWINCHBiến. SIGPOLLBiến. Biến SIGIO. SIGPWR

Các biến này được liên kết với số tín hiệu của các tín hiệu phụ thuộc vào hệ thống. Không phải tất cả chúng có thể được xác định trên một số hệ thống

Bên cạnh mỗi số tín hiệu, bạn có thể tham khảo một tập hợp các tín hiệu bằng cách sử dụng đối tượng

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
12. Nó có thể được sử dụng để điều khiển mặt nạ tín hiệu và cài đặt bộ xử lý tín hiệu cho một tập hợp các tín hiệu cùng một lúc

Lớp.

Một tập hợp các tín hiệu. Một sigset trống có thể được tạo bởi

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
44

Hàm số. tín hiệu sys-sigset…

Tạo và trả về một thể hiện của

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
12 với tín hiệu thành viên …. Mỗi tín hiệu có thể là một số tín hiệu, một đối tượng
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
12 khác hoặc
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
422 cho tất cả các tín hiệu có sẵn

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
45

Hàm số. sys-sigset-thêm. tín hiệu sigset…Chức năng. sys-sigset-xóa. tín hiệu sigset…

Sigset phải là một đối tượng

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
12. Các thủ tục đó lần lượt thêm và xóa các tín hiệu đã chỉ định khỏi sigset và trả về kết quả. bản thân sigset cũng được sửa đổi

tín hiệu có thể là một số tín hiệu, một đối tượng

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
12 khác hoặc
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
422 cho tất cả các tín hiệu có sẵn

Hàm số. sys-sigset-điền. sigsetChức năng. sys-sigset-trống. sigset

Lấp đầy sigset bằng tất cả các tín hiệu có sẵn hoặc làm trống sigset

Hàm số. sys-signal-tên tín hiệu

Trả về tên mà con người có thể đọc được của số tín hiệu đã cho. [Lưu ý rằng số tín hiệu phụ thuộc vào hệ thống. ]

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
46

6. 24. 7. 2 Gửi tín hiệu

Để gửi tín hiệu, bạn có thể sử dụng

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
57 hoạt động như
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
66

Hàm số. sys-kill pid sig

[POSIX] Gửi tín hiệu sig đến [các] quy trình đã chỉ định. Sig phải là số nguyên dương chính xác. pid là một số nguyên chính xác và chỉ định [các] quy trình đích

  • Nếu pid dương, đó là id tiến trình đích
  • Nếu pid bằng 0, tín hiệu sẽ được gửi đến mọi quy trình trong nhóm quy trình của quy trình hiện tại
  • Nếu pid nhỏ hơn -1, tín hiệu sẽ được gửi đến mọi quy trình trong nhóm quy trình -pid

Trên các nền tảng gốc của Windows,

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
57 có thể lấy số nguyên dương hoặc xử lý quy trình [ví dụ
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
12] làm pid. Chỉ
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
69,
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
70 và
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
71 được phép làm sig;

Không có Đề án tương đương cho

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
78, nhưng bạn có thể sử dụng
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
79

6. 24. 7. 3 Xử lý tín hiệu

Bạn có thể đăng ký quy trình xử lý tín hiệu trong Đề án. [Trong môi trường đa luồng, các trình xử lý tín hiệu được chia sẻ bởi tất cả các luồng; xem Tín hiệu và luồng để biết chi tiết]

Khi một tín hiệu được gửi đến quy trình Đề án, VM chỉ ghi lại tín hiệu đó và xử lý sau tại một 'điểm an toàn' nơi trạng thái của VM nhất quán. Chúng tôi gọi tín hiệu đang chờ xử lý khi nó được VM đăng ký nhưng chưa được xử lý

[Lưu ý rằng điều này làm cho việc xử lý một số tín hiệu như

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
80 trở nên vô dụng, vì quy trình không thể tiếp tục thực thi hợp lý sau khi ghi tín hiệu]

Nếu cùng một tín hiệu được gửi nhiều lần trước khi VM xử lý tín hiệu đầu tiên, thì tín hiệu thứ hai trở đi không có hiệu lực. [Điều này phù hợp với mô hình tín hiệu Unix truyền thống. ] Nói cách khác, đối với mỗi vòng lặp VM, trình xử lý tín hiệu có thể được gọi nhiều nhất một lần cho mỗi tín hiệu

Khi có quá nhiều tín hiệu cùng loại đang chờ xử lý, Gauche cho rằng đã xảy ra sự cố [e. g. vòng lặp vô hạn bên trong C-routine] và hủy bỏ quá trình. Mặc định của giới hạn này được đặt khá thấp [3], để cho phép chấm dứt tập lệnh tương tác không phản hồi bằng cách nhập Ctrl-C ba lần. Lưu ý rằng bộ đếm là riêng cho từng tín hiệu; . Bạn có thể thay đổi giới hạn này bằng cách

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
83 được mô tả bên dưới

Khi bạn đang sử dụng trình thông dịch

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
73, hành vi mặc định cho từng tín hiệu như trong bảng sau

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
85

Không thể xử lý trong Đề án.

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
86 tuân theo hành vi mặc định của hệ thống

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
87

Không có bộ xử lý tín hiệu nào được cài đặt cho các tín hiệu này trước

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
73, vì vậy quy trình tuân theo hành vi mặc định của hệ thống. Các chương trình Scheme có thể cài đặt bộ xử lý tín hiệu riêng nếu cần

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
89

Nếu

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
73 đang chạy với chế độ chỉnh sửa đầu vào, bộ xử lý tín hiệu sẽ được cài đặt để khôi phục trạng thái đầu cuối. Mặt khác, không có trình xử lý tín hiệu nào được cài đặt theo mặc định và chương trình Đề án có thể cài đặt trình xử lý tín hiệu của chính nó nếu cần

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
91

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
86 cài đặt trình xử lý tín hiệu cho các tín hiệu thoát khỏi ứng dụng có mã 0 này

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
93

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
86 cài đặt một trình xử lý tín hiệu không làm gì cả—nghĩa là tín hiệu này bị bỏ qua theo mặc định một cách hiệu quả

Đó là một sự lựa chọn thiết kế. Vì Gauche trì hoãn việc xử lý tín hiệu thực tế, nên

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
93 sẽ được xử lý sau khi lệnh gọi hệ thống cố ghi vào một đường ống bị hỏng trả về với
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
96. Điều đó làm cho tín hiệu trở nên ít hữu dụng hơn, vì chúng ta có thể xử lý tình huống bằng trình xử lý lỗi cho
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
12 với
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
96

Hành vi Unix mặc định của

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
93 là chấm dứt quá trình. Nó rất hữu ích cho các công cụ dòng lệnh truyền thống thường được kết hợp với nhau—nếu một trong các lệnh xuôi dòng không thành công, quy trình ngược dòng sẽ nhận được
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
93 và toàn bộ chuỗi lệnh sẽ bị tắt mà không gặp rắc rối gì. Tuy nhiên, tín hiệu khá khó chịu đối với các loại đầu ra khác như ổ cắm

Gauche không hỗ trợ quy ước "thoát khi đường ống bị kẹt" này theo cổng. Một cổng có thể được cấu hình là nhạy cảm với sigpipe; . Theo mặc định, đầu ra tiêu chuẩn và đầu ra lỗi tiêu chuẩn được cấu hình theo cách đó

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
02

Trên nền tảng Linux có hỗ trợ luồng, các tín hiệu này được hệ thống sử dụng và không có sẵn cho Scheme. Trên các hệ thống khác, các tín hiệu này hoạt động giống như được mô tả bên dưới

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
03

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
86 cài đặt bộ xử lý tín hiệu mặc định, làm tăng điều kiện của
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
12 [xem Điều kiện]. Các chương trình lược đồ có thể ghi đè lên nó bằng bộ xử lý tín hiệu riêng của nó

Nếu bạn đang sử dụng Gauche được nhúng trong một số ứng dụng khác, nó có thể xác định lại hành vi mặc định

Sử dụng các quy trình sau để nhận/đặt bộ xử lý tín hiệu từ Scheme

Hàm số. set-signal-xử lý. xử lý tín hiệu. sigmask tùy chọn

Các tín hiệu có thể là một số tín hiệu đơn lẻ hoặc một đối tượng

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
12 và trình xử lý phải là
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
422,
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
5,
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
09 hoặc một thủ tục nhận một đối số. Nếu trình xử lý là một thủ tục, nó sẽ được gọi khi quá trình nhận được một trong [các] tín hiệu đã chỉ định, với số tín hiệu nhận được làm đối số

Theo mặc định, các tín hiệu trong các tín hiệu bị chặn [ngoài mặt nạ tín hiệu có hiệu lực tại thời điểm đó] trong khi trình xử lý được thực thi, do đó [các] tín hiệu đó sẽ không được nhập lại bởi cùng một tín hiệu. Bạn có thể cung cấp một đối tượng

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
12 cho đối số sigmask để chỉ định các tín hiệu bị chặn một cách rõ ràng. Lưu ý rằng mặt nạ tín hiệu là mỗi luồng; . Bạn phải đặt mặt nạ tín hiệu của chủ đề đúng cách để tránh tình trạng như vậy

An toàn khi làm bất cứ điều gì trong trình xử lý, bao gồm đưa ra lỗi hoặc gọi phần tiếp theo được ghi lại ở nơi khác. [Tuy nhiên, các phần tiếp theo được chụp bên trong trình xử lý sẽ không hợp lệ sau khi bạn quay lại từ trình xử lý]

Nếu trình xử lý là

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
422, hành vi mặc định của hệ điều hành được đặt thành [các] tín hiệu đã chỉ định. Nếu trình xử lý là
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
5, [các] tín hiệu đã chỉ định sẽ bị bỏ qua

Nếu trình xử lý là

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
09 [xem Giá trị không xác định], điều đó cho biết Gauche sẽ để nguyên trình xử lý tín hiệu của hệ điều hành hiện tại. Giá trị này không được sử dụng nhiều trong
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
14 như trong
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
15. Nếu
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
09 được chuyển đến
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
14, nó sẽ ngay lập tức trả về mà không sửa đổi bất cứ điều gì. Tuy nhiên, nếu bạn nhận được
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
09 từ
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
15, bạn có thể biết rằng hành vi xử lý tín hiệu chưa được sửa đổi bởi Gauche. [Lưu ý rằng một khi Gauche đã từng cài đặt bộ xử lý tín hiệu, không có cách nào để hoàn nguyên về việc trả lại
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
15 cho
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
09]

Lưu ý rằng cài đặt trình xử lý tín hiệu được chia sẻ giữa các luồng trong môi trường đa luồng. Trình xử lý được gọi từ luồng nhận được tín hiệu. Xem Tín hiệu và chủ đề để biết chi tiết

Hàm số. chức năng get-signal-handler signum. get-signal-handler-mask signum

Trả về cài đặt trình xử lý hoặc cài đặt mặt nạ tín hiệu của một dấu hiệu tín hiệu tương ứng. Xem

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
14 để biết ý nghĩa của giá trị trả về của
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
15

Hàm số. get-signal-xử lý

Trả về danh sách kết hợp của tất cả cài đặt trình xử lý tín hiệu. Xe của mỗi phần tử của danh sách được trả về là một đối tượng

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
12 và cdr của nó là trình xử lý [một thủ tục hoặc một giá trị boolean] của các tín hiệu trong tập hợp

Hàm số. get-signal-pending-limitFunction. set-signal-pending-giới hạn giới hạn

Nhận/đặt số lượng tín hiệu đang chờ xử lý tối đa cho mỗi loại tín hiệu. Nếu số lượng tín hiệu đang chờ xử lý vượt quá giới hạn này, Gauche sẽ hủy bỏ quá trình. Xem giải thích ở đầu phần này để biết chi tiết. Giới hạn phải là một số nguyên chính xác không âm. Trong triển khai hiện tại, số lượng giới hạn tối đa là 255. Đặt giới hạn thành 0 làm cho số lượng tín hiệu đang chờ xử lý không giới hạn

vĩ mô. with-signal-handlers [xử lý-mệnh đề…] thunk

Một macro tiện lợi để tạm thời cài đặt bộ xử lý tín hiệu trong khi thực hiện thunk. [Ghi chú. mặc dù điều này thuận tiện nhưng điều này có một số thuộc tính nguy hiểm được mô tả bên dưới. Sử dụng cẩn thận. ]

Mỗi mệnh đề Handler có thể là một trong các dạng sau

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
25

Tín hiệu phải là một biểu thức sẽ tạo ra tín hiệu, danh sách tín hiệu hoặc đối tượng

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
12. Cài đặt trình xử lý tín hiệu cho các tín hiệu đánh giá expr … khi một trong các tín hiệu trong các tín hiệu được phân phối

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
27

Biểu mẫu này đặt trình xử lý tín hiệu thành trình xử lý, trong đó trình xử lý phải là

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
422,
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
5 hoặc một thủ tục nhận một đối số

Nếu trình xử lý là một thủ tục, nó sẽ được gọi khi quá trình nhận được một trong [các] tín hiệu đã chỉ định, với số tín hiệu nhận được làm đối số. Nếu trình xử lý là

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
422, hành vi mặc định của hệ điều hành được đặt thành [các] tín hiệu đã chỉ định. Nếu trình xử lý là
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
5, [các] tín hiệu đã chỉ định sẽ bị bỏ qua

Khi điều khiển thoát khỏi thunk, cài đặt trình xử lý tín hiệu trước

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
32 được phục hồi

LƯU Ý. Nếu bạn đang cài đặt nhiều bộ xử lý tín hiệu, chúng sẽ được cài đặt nối tiếp. Nếu một tín hiệu được gửi đi trước khi tất cả các bộ xử lý được cài đặt, thì trạng thái của bộ xử lý tín hiệu có thể không nhất quán. Cũng lưu ý rằng cài đặt trình xử lý là trạng thái chung;

6. 24. 7. 4 Tín hiệu mặt nạ và chờ đợi

Chương trình lược đồ có thể đặt mặt nạ tín hiệu, là một tập hợp các tín hiệu bị chặn phân phối. Nếu tín hiệu được phân phối bị chặn hoàn toàn trong quy trình, tín hiệu sẽ trở thành "đang chờ xử lý". Tín hiệu đang chờ xử lý có thể được gửi sau khi mặt nạ tín hiệu được thay đổi để không chặn tín hiệu đã chỉ định. [Tuy nhiên, tùy thuộc vào hệ điều hành mà các tín hiệu đang chờ xử lý có được xếp hàng đợi hay không. ]

Trong môi trường đa luồng, mỗi luồng có mặt nạ tín hiệu riêng

Hàm số. sys-sigmask làm thế nào mặt nạ

Sửa đổi mặt nạ tín hiệu của luồng hiện tại và trả về mặt nạ tín hiệu trước đó. Mặt nạ phải là đối tượng

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
12 để chỉ định mặt nạ mới hoặc
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
5 nếu bạn chỉ muốn truy vấn mặt nạ hiện tại mà không sửa đổi mặt nạ

Nếu bạn đưa đối tượng

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
12 vào mặt nạ, đối số sẽ là một trong các hằng số nguyên sau đây như thế nào

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
37

Đặt mặt nạ làm mặt nạ tín hiệu của luồng

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
38

Thêm tín hiệu trong mặt nạ vào mặt nạ tín hiệu của luồng

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
39

Xóa tín hiệu trong mặt nạ khỏi mặt nạ tín hiệu của luồng

Hàm số. mặt nạ sys-sigsuspend

Tự động đặt mặt nạ tín hiệu của luồng thành mặt nạ và tạm dừng luồng đang gọi. Khi một tín hiệu không bị chặn và có bộ xử lý tín hiệu được cài đặt được phân phối, bộ xử lý liên quan được gọi, sau đó

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
40 trả về

Hàm số. mặt nạ sys-sigwait

[POSIX] Mặt nạ phải là đối tượng

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
12. Nếu bất kỳ tín hiệu nào trong mặt nạ đang/đang chờ xử lý trong HĐH, hãy xóa nguyên tử một trong số chúng và trả về số tín hiệu của tín hiệu đã xóa. Nếu không có tín hiệu nào trong mặt nạ đang chờ xử lý,
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
42 sẽ chặn cho đến khi có bất kỳ tín hiệu nào trong mặt nạ đến

Bạn phải chặn tất cả các tín hiệu trong mặt nạ trong tất cả các luồng trước khi gọi

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
42. Nếu có một chuỗi không chặn tín hiệu, hành vi của
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
42 không được xác định

Ghi chú.

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
45 sử dụng hàm
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
46 của hệ thống, có hành vi không được xác định nếu có bộ xử lý tín hiệu trên các tín hiệu mà nó chờ. Để tránh phức tạp,
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
42 đặt lại bộ xử lý đã đặt thành các tín hiệu có trong mặt nạ trước khi gọi
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
46 đến
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
49 và khôi phục chúng sau khi
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
46 trả về. Nếu một luồng khác thay đổi bộ xử lý tín hiệu trong khi
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
42 đang chờ, thì hành vi đó không được xác định;

6. 24. 7. 5 Tín hiệu và chủ đề

Ngữ nghĩa của tín hiệu có vẻ hơi phức tạp trong môi trường đa luồng. Tuy nhiên, nó khá dễ hiểu khi bạn nhớ một số quy tắc nhỏ. Bên cạnh đó, Gauche thiết lập hành vi mặc định dễ sử dụng, đồng thời cho phép các lập trình viên thực hiện những công việc phức tạp

Nếu bạn không muốn bị làm phiền bởi các chi tiết, chỉ cần nhớ một điều, với một phụ lục. Theo mặc định, các tín hiệu được xử lý bởi luồng nguyên thủy [chính]. Tuy nhiên, nếu luồng chính bị treo trên biến điều kiện hoặc biến điều kiện, tín hiệu có thể không được xử lý, vì vậy hãy cẩn thận

Bây giờ, nếu bạn tò mò về các chi tiết, đây là các quy tắc

  • Cài đặt trình xử lý tín hiệu được chia sẻ bởi tất cả các luồng
  • Mặt nạ tín hiệu dành riêng cho luồng
  • Nếu một quy trình nhận được tín hiệu không đồng bộ [nghĩ rằng đó là tín hiệu được gửi từ các quy trình khác], một luồng sẽ được chọn, trong số các luồng không chặn tín hiệu đó
  • Trình xử lý tín hiệu được chạy trên chuỗi đã chọn. Tuy nhiên, nếu luồng đã chọn đang chờ lấy khóa mutex hoặc biến điều kiện, việc xử lý tín hiệu sẽ bị trì hoãn cho đến khi luồng được khởi động lại. Bản thân việc gửi tín hiệu không khởi động lại luồng

Bây giờ, những quy tắc này có một số ý nghĩa

Nếu có nhiều luồng không chặn tín hiệu cụ thể, bạn không thể biết luồng nào nhận tín hiệu. Tình huống như vậy ít hữu ích hơn trong Gauche so với các chương trình C vì thực tế là việc xử lý tín hiệu có thể bị trì hoãn vô thời hạn nếu luồng thu đang chờ trên biến điều kiện hoặc biến điều kiện. Vì vậy, nên đảm bảo rằng, đối với mỗi tín hiệu, chỉ có một luồng có thể nhận được tín hiệu đó.

Trong Gauche, tất cả các luồng được tạo bởi

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
52 [xem Quy trình luồng] chặn tất cả các tín hiệu theo mặc định [ngoại trừ các tín hiệu dành riêng]. Điều này cho phép tất cả các tín hiệu được hướng đến luồng nguyên thủy [chính]

Một chiến lược khác là tạo một luồng dành riêng cho việc xử lý tín hiệu. Để làm như vậy, bạn phải chặn các tín hiệu trong chuỗi nguyên thủy, sau đó tạo chuỗi xử lý tín hiệu và trong chuỗi đó, bạn bỏ chặn tất cả các tín hiệu. Một chủ đề như vậy chỉ có thể lặp lại trên

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
53

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
47

Ứng dụng phức tạp có thể muốn kiểm soát chính xác việc xử lý tín hiệu trên mỗi luồng. Bạn có thể làm như vậy, chỉ cần đảm bảo rằng tại bất kỳ thời điểm nào, chỉ chuỗi được chỉ định mới bỏ chặn tín hiệu mong muốn

6. 24. 8 Truy vấn hệ thống

Hàm số. sys-uname

[POSIX] Trả về danh sách năm phần tử,

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
54

Hàm số. sys-gethostname

Trả về tên máy chủ. Nếu hệ thống không có gethostname[], phần tử thứ hai của danh sách được trả về bởi

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
55 được sử dụng

Hàm số. sys-getdomainname

Trả lại tên miền. Nếu hệ thống không có getdomainname[], thì trả về

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
56

Hàm số. sys-getcwd

[POSIX] Trả về thư mục làm việc hiện tại bằng một chuỗi. Nếu không thể lấy được thư mục làm việc hiện tại từ hệ thống, một lỗi sẽ được báo hiệu. Xem thêm

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
57 [xem Thao tác tệp khác],
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
29 [xem Tiện ích thư mục]

Hàm số. sys-getgidFunction. sys-getegid

[POSIX] Trả về giá trị nguyên của id nhóm thực và hiệu quả của quy trình hiện tại, tương ứng. Sử dụng

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
59 hoặc
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
60 để lấy tên của nhóm và các thông tin khác liên quan đến id nhóm được trả về [xem nhóm và người dùng Unix]

Hàm số. sys-setgid gid

[POSIX] Đặt id nhóm hiệu quả của quy trình hiện tại

Hàm số. sys-getuidFunction. sys-geteuid

[POSIX] Trả về giá trị nguyên của id người dùng thực và hiệu quả của quy trình hiện tại, tương ứng. Sử dụng

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
61 hoặc
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
62 để lấy tên người dùng và thông tin khác liên quan đến id người dùng được trả về [xem nhóm Unix và người dùng]

Hàm số. sys-setuid uid

[POSIX] Đặt id người dùng hiệu quả của quy trình hiện tại

Hàm số. sys-setugid?

Trả về true nếu tiến trình đang chạy với suid/sgid-ed [nghĩa là bit suid và/hoặc sgid của chương trình được đặt. ]

Ghi chú. Nếu nền tảng có cuộc gọi

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
63, chúng tôi sẽ sử dụng nó. Mặt khác, chúng tôi nhớ nếu thực [người dùng. nhóm] id và hiệu quả [người dùng. group] id khác nhau hay không tại thời điểm khởi tạo. [Trong trường hợp sau, chúng tôi không thể phát hiện trường hợp quy trình thay đổi [e]uid/[e]gid trước khi khởi tạo Gauche; hãy lưu ý nếu libgauche được sử dụng làm công cụ Đề án nhúng]

Hàm số. sys-getgroup

[POSIX] Trả về danh sách id số nguyên của các nhóm bổ sung

Hàm số. sys-setgroups gids

Đặt các nhóm của quy trình hiện tại thành danh sách id nhóm số nguyên đã cho. Người gọi phải có đặc quyền thích hợp

Quy trình này chỉ khả dụng khi id tính năng

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
64 tồn tại. Sử dụng
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
97 cho chương trình di động

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
48

Hàm số. sys-getlogin

[POSIX] Trả về một chuỗi tên của người dùng đã đăng nhập trên thiết bị đầu cuối kiểm soát của quy trình hiện tại. Nếu hệ thống không xác định được thông tin, trả về

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
5

Hàm số. sys-getpgrp

[POSIX] Trả về id nhóm quy trình của quy trình hiện tại

Hàm số. sys-getpgid pid

Trả về id nhóm quy trình của quy trình được chỉ định bởi pid. Nếu pid bằng 0, quy trình hiện tại được sử dụng

Lưu ý rằng cuộc gọi

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
67 không có trong POSIX. Nếu hệ thống không có
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
67, thì
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
69 vẫn hoạt động nếu pid bằng 0 [nó chỉ gọi
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
70], nhưng báo hiệu lỗi nếu pid không bằng 0

Hàm số. sys-setpgid pid pgid

[POSIX] Đặt id nhóm quy trình của pid quy trình thành pgid. Nếu pid bằng 0, ID quy trình của quy trình hiện tại được sử dụng. Nếu pgid bằng 0, ID quy trình của quy trình được chỉ định bởi

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
71 được sử dụng. [Do đó,
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
72 đặt id nhóm quy trình của quy trình hiện tại thành id quy trình hiện tại]

Hàm số. sys-setsid

[POSIX] Tạo phiên mới nếu quy trình gọi không phải là trưởng nhóm quy trình

Hàm số. sys-getpidFunction. sys-getppid

[POSIX] Trả về id tiến trình hiện tại và id tiến trình cha tương ứng

[POSIX]

Hàm số. sys-ctermid

[POSIX] Trả về tên của thiết bị đầu cuối kiểm soát của quy trình. Đây có thể chỉ là một

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
73. Xem thêm
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
74

Hàm số. sys-getrlimit resourceFunction. tài nguyên sys-setrlimit hiện tại. tối đa tùy chọn

[POSIX] Nhận và đặt giới hạn tài nguyên tương ứng. Tài nguyên là một hằng số nguyên để chỉ định tài nguyên cần quan tâm. Các hằng số sau đây được định nghĩa. [Các hằng số được đánh dấu là bsd và/hoặc linux chỉ ra rằng chúng không được xác định trong POSIX nhưng được xác định trong BSD và/hoặc Linux. Các hệ thống khác có thể có hoặc không. Tham khảo trang quản trị

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
75 của hệ thống của bạn để biết chi tiết. ]

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
49

Hàm số. sys-nice inc

[POSIX] Thêm inc, phải là một số nguyên chính xác, vào giá trị đẹp của quy trình hiện tại. Chỉ người dùng root mới có thể chỉ định giá trị inc âm. Trả về giá trị tốt đẹp mới

Hàm số. lỗi sys-strerror

Errno phải là một số nguyên không âm chính xác biểu thị số lỗi hệ thống. Hàm này trả về một chuỗi mô tả lỗi

Để biểu diễn errno, các hằng số sau đây được định nghĩa. Mỗi hằng số được liên kết với một số nguyên chính xác biểu thị số lỗi của hệ thống. Lưu ý rằng giá trị thực tế có thể khác nhau giữa các hệ thống và một số hằng số này có thể không được xác định trên một số hệ thống

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
0

Hàm số. sys-errno->ký hiệu kFunction. sys-biểu tượng-> biểu tượng errno

Các thủ tục này chuyển đổi giữa số lỗi số nguyên và ký hiệu của tên unix của nó [e. g.

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
54]

Nếu số hoặc tên lỗi đã cho không có sẵn trên nền tảng đang chạy, các quy trình đó sẽ trả về

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
5. Xem
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
78 ở trên để biết các tên lỗi có thể xảy ra

Tên lỗi hợp lệ và giá trị thực của chúng khác nhau giữa các nền tảng. Các quy trình này giúp dễ dàng viết mã meta di động xử lý các lỗi hệ thống

6. 24. 9 thời gian

Gauche có hai biểu diễn thời gian, một biểu diễn tương thích với API POSIX và biểu diễn còn lại tương thích với SRFI-18, SRFI-19 và SRFI-21. Hầu hết các thủ tục chấp nhận cả hai đại diện;

Thời gian POSIX được biểu thị bằng một số thực là một số giây kể từ Unix Epoch [1 tháng 1 năm 1970, 0. 00. 00 giờ GMT]. Thủ tục

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
79, tương ứng với POSIX
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
80, trả về biểu diễn thời gian này

Thời gian tương thích với SRFI được biểu thị bằng một đối tượng thuộc lớp

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
12, lưu giữ giây và nano giây, cũng như loại thời gian [UTC, TAI, thời lượng, thời gian xử lý, v.v.].
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
82 trả về đại diện này

thời gian POSIX

[POSIX] Trả về thời gian hiện tại theo thời gian POSIX [thời gian kể từ Epoch [00. 00. 00 UTC, ngày 1 tháng 1 năm 1970], tính bằng giây]. Nó có thể là một số không tách rời, tùy thuộc vào kiến ​​trúc

Lưu ý rằng định nghĩa của POSIX về “giây kể từ Kỷ nguyên” không tính đến giây nhảy vọt

Trả về hai giá trị. Giá trị đầu tiên là một số giây và giá trị thứ hai là một phân số trong một số micro giây, kể từ 1970/1/1 0. 00. 00 UTC. Nếu hệ thống không có cuộc gọi

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
83, chức năng này sẽ gọi
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
84;

Lớp dựng sẵn.

Đại diện cho

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
85, một ngày dương lịch. Nó có các khe sau

Biến thể hiện của. giây

giây. 0-61

Biến thể hiện của. tối thiểu

Phút. 0-59

Biến thể hiện của. giờ

Giờ. 0-23

Biến thể hiện của. hôm nay

Ngày trong tháng, tính từ 1. 1-31

Biến thể hiện của. Thứ hai

Tháng, tính từ 0. 0-11

Biến thể hiện của. năm

Năm kể từ năm 1900, e. g. 102 cho năm 2002

Biến thể hiện của. ngày thứ hai

Ngày trong tuần. chủ nhật = 0. thứ bảy = 6

Biến thể hiện của. ngày

Ngày trong năm. 1 tháng 1 = 0. Ngày 31 tháng 12 = 364 hoặc 365

Biến thể hiện của. isdst

Cờ cho biết giờ tiết kiệm ánh sáng ban ngày có hiệu lực hay không. Tích cực nếu DST có hiệu lực, 0 nếu không hoặc âm nếu không biết

[POSIX] Chuyển đổi thời gian thành đối tượng

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
12, tương ứng được biểu thị bằng GMT hoặc múi giờ địa phương. Thời gian có thể là thời gian POSIX hoặc thời gian SRFI

[POSIX] Chuyển đổi thời gian thành biểu diễn chuỗi, sử dụng POSIX ctime[]. Thời gian có thể là thời gian POSIX hoặc thời gian SRFI

[POSIX] Trả về chênh lệch của hai lần theo số giây thực. Time0 và time1 có thể là thời gian POSIX hoặc thời gian SRFI

[POSIX] Chuyển đổi đối tượng

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
12 tm thành biểu diễn chuỗi

[POSIX] Chuyển đổi đối tượng

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
12 tm thành biểu diễn chuỗi, theo định dạng chuỗi định dạng. Xem mục nhập thủ công của hệ thống của bạn là
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
89 để biết định dạng được hỗ trợ

Nó có thể trả về một chuỗi trống nếu định dạng dẫn đến một chuỗi dài bất thường

[POSIX] Chuyển đổi đối tượng

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
12 tm, được biểu thị bằng giờ địa phương, sang thời gian POSIX [số giây kể từ Epoch]

Hàm số. sys-tm->alist tm

[Chức năng không dùng nữa]

thời gian SRFI

[SRFI-18][SRFI-21] Trả về đối tượng

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
12 đại diện cho thời gian hiện tại trong
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
92. Xem các thủ tục và loại dữ liệu Thời gian, vì nó xác định lại
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
93 để cho phép đối số tùy chọn chỉ định loại thời gian

[SRFI-18][SRFI-19][SRFI-21] Trả về

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
422 nếu obj là một đối tượng thời gian

[SRFI-18][SRFI-21] Chuyển đổi giữa đối tượng thời gian và số giây [thời gian POSIX]. Đối số thời gian của

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
95 phải là một đối tượng
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
12

6. 24. 10 Quản lý quy trình

Các quy trình sau đây cung cấp giao diện trực tiếp, khá thô cho các cuộc gọi hệ thống. Xem thêm Giao diện quy trình cấp cao, cung cấp khả năng xử lý quy trình thuận tiện hơn trên các giao diện nguyên thủy này

Fork và exec

Hàm số. lệnh sys-system

[POSIX] Chạy lệnh trong quy trình con. lệnh thường được chuyển đến

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
97, vì vậy các siêu ký tự shell được diễn giải

Hàm này trả về một giá trị số nguyên

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
98 được trả về. Vì POSIX không xác định những gì
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
98 trả về, nên bạn không thể diễn giải giá trị được trả về theo cách di động

Trên các nền tảng gốc của Windows, điều này sẽ chuyển đối số tới

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
500

Hàm số. sys-fork

[POSIX] Phân nhánh quy trình hiện tại. Trả về 0 nếu bạn đang ở tiến trình con và pid của tiến trình con nếu bạn đang ở tiến trình cha. Tất cả các bộ mô tả tệp đã mở được chia sẻ giữa cha mẹ và con. Xem

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
501 của hệ thống của bạn để biết chi tiết

Nếu tiến trình con chạy một số mã Đề án và thoát thay vì gọi

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
502, thì nó sẽ gọi
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
1 thay vì
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
0 để tự kết thúc. Cuộc gọi thoát bình thường cố gắng xóa bộ đệm tệp và trên một số hệ điều hành, nó làm rối tung bộ đệm tệp của cha mẹ

Cần lưu ý rằng

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
505 không an toàn khi nhiều luồng đang chạy. Bởi vì
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
501 sao chép hình ảnh bộ nhớ của tiến trình bao gồm bất kỳ trạng thái mutex nào, một mutex bị khóa bởi một luồng khác tại thời điểm
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
505 vẫn bị khóa trong tiến trình con, tuy nhiên tiến trình con không có luồng nào mở khóa nó. [Điều này cũng áp dụng cho các mutex nội bộ, vì vậy ngay cả khi bạn không sử dụng rõ ràng Scheme mutex, tình huống này luôn có thể xảy ra. ]

Nếu điều bạn muốn là sinh ra một chương trình khác trong ứng dụng đa luồng, hãy sử dụng

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
508 được giải thích bên dưới. Nếu bạn thực sự cần chạy mã Đề án trong quy trình con, một kỹ thuật điển hình là bạn rẽ nhánh một quy trình người quản lý khi bắt đầu ứng dụng và bất cứ khi nào bạn cần một quy trình mới, bạn yêu cầu quy trình người quản lý rẽ nhánh một quy trình cho bạn

Quy trình này không khả dụng trên nền tảng Windows gốc

Hàm số. lệnh sys-exec args. thư mục chính iomap sigmask

[POSIX+] Thực thi lệnh với args, một danh sách các đối số. Hình ảnh quy trình hiện tại được thay thế bằng lệnh, vì vậy chức năng này không bao giờ trả về

Tất cả các phần tử của args phải là chuỗi. Phần tử đầu tiên của args được sử dụng là

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
509, i. e. tên chương trình

Thư mục đối số từ khóa phải là một chuỗi tên thư mục hoặc

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
5. Nếu nó là một chuỗi,
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
502 thay đổi thư mục làm việc hiện tại ở đó trước khi thực hiện chương trình

Đối số từ khóa iomap, khi được cung cấp, chỉ định cách xử lý các bộ mô tả tệp mở. Nó phải là định dạng sau

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
1

To-fd phải là một số nguyên và from-port-or-fd phải là một bộ mô tả tệp số nguyên hoặc một cổng. Mỗi phần tử của danh sách làm cho bộ mô tả tệp from-port-or-fd của quy trình hiện tại được ánh xạ tới bộ mô tả tệp to-fd trong quy trình được thực hiện

Nếu iomap được cung cấp, bất kỳ bộ mô tả tệp nào không được chỉ định trong danh sách iomap sẽ bị đóng trước

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
512. Mặt khác, tất cả các bộ mô tả tệp trong quy trình hiện tại vẫn mở

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
2

Đối số từ khóa sigmask có thể là một ví dụ của

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
12 hoặc
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
5 [Xem Tín hiệu, để biết chi tiết về mặt nạ tín hiệu]. Nếu nó là một thể hiện của
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
12, mặt nạ tín hiệu của luồng gọi sẽ được thay thế bằng nó ngay trước khi
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
516 được gọi. Chẳng hạn, sẽ hữu ích khi chạy một chương trình bên ngoài từ một luồng trong đó tất cả các tín hiệu đều bị chặn [đây là mặc định; xem Tín hiệu và luồng]. Nếu không đặt sigmask, quy trình
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
517ed kế thừa mặt nạ tín hiệu của luồng đang gọi và trở thành quy trình chặn tất cả các tín hiệu, điều này không thuận tiện lắm trong hầu hết các trường hợp

Khi

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
502 gặp lỗi, hầu hết thời gian nó đưa ra tình trạng lỗi. Tuy nhiên, khi các bộ mô tả tệp được hoán vị, sẽ không thực tế để xử lý lỗi theo cách hợp lý [bạn thậm chí không biết stderr vẫn khả dụng. ], vì vậy Gauche chỉ cần thoát khi có lỗi

Trên nền tảng gốc của Windows, chỉ các chuyển hướng của stdin, stdout và stderr mới được xử lý. Mặt nạ đơn lẻ bị bỏ qua vì Windows không có tín hiệu làm phương tiện giao tiếp giữa các quá trình

Hàm số. lệnh sys-fork-and-exec lập luận. thư mục chính iomap sigmask tách ra

Giống như

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
502, nhưng thực thi
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
501 ngay trước khi ánh xạ lại I/O, thay đổi mặt nạ tín hiệu và gọi
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
521. Trả về id tiến trình con. Ý nghĩa của các đối số giống như
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
502

Bạn nên sử dụng quy trình này thay vì kết hợp

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
505 và
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
502 khi bạn cần tạo một chương trình khác trong khi các luồng khác đang chạy. Không có cấp phát bộ nhớ cũng như khóa thu được thực hiện giữa
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
501 và
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
521, do đó, nó khá an toàn trong môi trường đa luồng

Trên các nền tảng gốc của Windows, quy trình này trả về một đối tượng xử lý Windows [

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
12] của quy trình đã tạo thay vì ID quy trình số nguyên. Xem bên dưới để biết quy trình Windows xử lý API cụ thể

Giống như

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
502, chỉ các chuyển hướng của stdin, stdout và stderr mới được xử lý trên nền tảng gốc của Windows

Khi một giá trị true được gán cho đối số từ khóa detached, quy trình đã thực thi sẽ được tách ra khỏi nhóm quy trình hiện tại và thuộc về nhóm riêng của nó. Nghĩa là, nó sẽ không bị ảnh hưởng đến tín hiệu được gửi đến nhóm quy trình mà quy trình người gọi hiện thuộc về. Đó là một phần của các thành ngữ phổ biến để bắt đầu quá trình daemon

Trên các nền tảng Unix, bên cạnh quy trình được thực thi sẽ có phiên riêng của nó trước

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
529, nó thực hiện thêm
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
501 để biến cha mẹ của nó thành quy trình
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
531 [pid=1]. [Ghi chú. Điều đó có nghĩa là tiến trình đang chạy thực sự là cháu của tiến trình gọi, mặc dù mối quan hệ đó không được bảo toàn. Pid được trả về là của tiến trình đang chạy, không phải tiến trình trung gian sẽ thoát ngay lập tức. ]

Trên các nền tảng gốc của Windows, cờ này khiến quy trình mới được tạo bằng cờ tạo

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
532

Chờ đợi

Hàm số. sys-chờ

[POSIX] Gọi hệ thống của

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
533. Quá trình tạm dừng thực hiện cho đến khi một trong những đứa trẻ kết thúc. Trả về hai giá trị số nguyên chính xác, giá trị đầu tiên là id tiến trình của con và giá trị thứ hai là mã trạng thái. Mã trạng thái có thể được giải thích bằng các chức năng sau

Hàm số. sys-waitpid pid. chìa khóa nohang không dấu vết

[POSIX] Đây là giao diện của

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
534, phiên bản mở rộng của chờ đợi

pid là một số nguyên chính xác chỉ định [các] đứa trẻ nào sẽ được đợi. Nếu nó là một số nguyên dương, nó sẽ đợi con cụ thể đó. Nếu nó bằng 0, nó sẽ đợi bất kỳ thành viên nào trong nhóm quy trình này. Nếu là -1, nó đợi bất kỳ tiến trình con nào. Nếu nó nhỏ hơn -1, nó sẽ đợi bất kỳ tiến trình con nào có id nhóm tiến trình bằng giá trị tuyệt đối của pid

Nếu không có tiến trình con nào để đợi, hoặc một pid cụ thể được đưa ra nhưng nó không phải là tiến trình con của tiến trình hiện tại, thì một lỗi [

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
12,
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
536] sẽ được báo hiệu

Quá trình gọi tạm dừng cho đến khi một trong những quá trình con đó bị chấm dứt, trừ khi true được chỉ định cho đối số từ khóa nohang

Nếu true được chỉ định cho đối số từ khóa không được theo dõi, trạng thái của tiến trình con đã dừng cũng có thể được trả về

Các giá trị trả về là hai số nguyên chính xác, giá trị đầu tiên là id tiến trình con và giá trị thứ hai là mã trạng thái. Nếu nohang là đúng và không có trạng thái tiến trình con nào, giá trị đầu tiên bằng 0

Trên các nền tảng gốc của Windows, quy trình này cũng có thể chấp nhận đối tượng xử lý quy trình Windows [

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
12] dưới dạng pid để đợi quy trình cụ thể. Bạn có thể chuyển
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
538 dưới dạng pid để đợi bất kỳ phần tử con nào, nhưng bạn không thể đợi một nhóm quy trình cụ thể

Hàm số. sys-chờ-thoát? . trạng thái sys-wait-exit-status

[POSIX] Đối số là trạng thái thoát được trả về dưới dạng giá trị thứ hai từ

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
539 hoặc
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
540.
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
541 trả về
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
422 nếu tiến trình con kết thúc bình thường.
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
543 trả về mã thoát mà tiến trình con đã truyền cho
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
544 hoặc giá trị trả về của
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
545

Hàm số. sys-chờ-tín hiệu? . trạng thái sys-wait-termsig

[POSIX] Đối số là trạng thái thoát được trả về dưới dạng giá trị thứ hai từ

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
539 hoặc
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
540.
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
548 trả về
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
422 nếu tiến trình con bị kết thúc bởi tín hiệu chưa được bắt.
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
550 trả về số tín hiệu đã kết thúc đứa trẻ

Hàm số. sys-chờ-dừng? . trạng thái sys-wait-stopsig

[POSIX] Đối số là trạng thái thoát được trả về dưới dạng giá trị thứ hai từ

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
540.
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
552 trả về
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
422 nếu tiến trình con bị dừng. Trạng thái này chỉ có thể được bắt bởi
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
540 với đối số không được theo dõi thực sự.
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
555 trả về số signum đã dừng đứa trẻ

Trên nền gốc Windows, mã thoát không có cấu trúc như trên Unix. Bạn không thể phân biệt một quá trình được thoát tự nguyện hoặc bị chấm dứt bắt buộc. Gauche sử dụng mã thoát

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
556 để chấm dứt quy trình khác với
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
57 và quy trình
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
558 ở trên được điều chỉnh cho phù hợp, do đó có thể sử dụng
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
548 để kiểm tra xem liệu quy trình con có bị chấm dứt bởi Gauche hay không. [Xem Signal, để biết chi tiết về hỗ trợ signal trên Windows. ]
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
560 không bao giờ trả về true trên nền tảng gốc của Windows [chưa]

Tiện ích dành riêng cho Windows

Các thủ tục sau đây là để truy cập xử lý quy trình Windows. Chúng chỉ khả dụng trên các nền tảng gốc của Windows

Hàm số. sys-win-tiến trình?

[Windows] Trả về

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
422 nếu obj là đối tượng xử lý quy trình Windows

Hàm số. xử lý sys-win-process-pid

[Windows] Trả về một số nguyên PID của quy trình được đại diện bởi một bộ điều khiển xử lý quy trình Windows. Một lỗi được báo hiệu nếu tay cầm không phải là tay cầm quy trình Windows hợp lệ

Lưu ý rằng API để nhận pid từ trình điều khiển quy trình chỉ được cung cấp trên hoặc sau Windows XP SP1. Nếu bạn gọi thủ tục này trên phiên bản Windows trước đó, thì

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
538 sẽ được trả về

6. 24. 11 ghép kênh I/O

Các chức năng giao diện cho

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
563. Giao diện cấp cao hơn được cung cấp trên các giao diện nguyên thủy này;

Lớp dựng sẵn.

Đại diện cho

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
564, một bộ mô tả tệp. Bạn có thể tạo một bộ mô tả tệp trống bằng phương thức make

Hàm số. sys-fdset elt …

Tạo một phiên bản

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
12 mới với các bộ mô tả tệp được chỉ định bởi elt …. Mỗi elt có thể là một bộ mô tả tệp số nguyên, một cổng hoặc một phiên bản
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
12. Trong trường hợp cuối cùng, các bộ mô tả trong fdset đã cho được sao chép sang fdset mới

Hàm số. sys-fdset-ref fdset port-or-fdFunction. sys-fdset-set. cổng fdset hoặc cờ fd

Nhận và đặt bit mô tả tệp cụ thể của fdset. port-or-fd có thể là một cổng hoặc một bộ mô tả tệp số nguyên. Nếu port-or-fd là một cổng không có bộ mô tả tệp được liên kết, thì

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
567 trả về
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
5 và
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
569 không sửa đổi fdset. cờ phải là một giá trị boolean

Bạn có thể sử dụng setter chung của

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
567 như thế này

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
3

Hàm số. sys-fdset-sao chép. dest-fdset src-fdset

Sao chép nội dung của src-fdset vào dest-fdset. Trả về dest-fdset

Hàm số. sys-fdset-xóa. fdset

Làm trống và trả về fdset

Hàm số. sys-fdset->list fdsetFunction. danh sách-> sys-fdset fds

Chuyển đổi một fdset thành một danh sách các bộ mô tả tệp số nguyên và ngược lại. Trên thực tế,

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
571 hoạt động giống như
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
572, vì vậy nó chấp nhận các cổng và fdset khác cũng như các bộ mô tả tệp số nguyên

Hàm số. sys-fdset-max-fd

Trả về số mô tả tệp tối đa trong fdset

Hàm số. sys chọn readfds writefds ngoại trừfds. chức năng thời gian chờ tùy chọn. chọn hệ thống. readfds writefds ngoại trừ fds. thời gian chờ tùy chọn

Đợi một bộ mô tả tệp thay đổi trạng thái. readfds, writefds, và exceptfds là các đối tượng

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
12 để đại diện cho một bộ mô tả tệp để xem. Bộ mô tả tệp trong readfds được theo dõi để xem các ký tự đã sẵn sàng để đọc chưa. Các bộ mô tả tệp trong writefds được xem nếu ghi vào chúng là được. Bộ mô tả tệp trong exceptfds được theo dõi để tìm ngoại lệ. Bạn có thể chuyển
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
5 cho một hoặc nhiều đối số đó nếu bạn không quan tâm đến việc xem điều kiện

thời gian chờ chỉ định thời gian tối đa

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
575 chờ thay đổi điều kiện. Nó có thể là một số thực, cho số micro giây hoặc danh sách hai số nguyên, số đầu tiên là số giây và số thứ hai là số micro giây. Nếu bạn vượt qua
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
5,
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
575 sẽ đợi vô thời hạn

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
575 trả về bốn giá trị. Giá trị đầu tiên là một số bộ mô tả mà nó phát hiện thay đổi trạng thái. Nó có thể bằng 0 nếu hết thời gian chờ. Các giá trị thứ hai, thứ ba và thứ tư là đối tượng
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
12 chứa một bộ mô tả đã thay đổi trạng thái đọc, ghi và ngoại lệ tương ứng. Nếu bạn đã chuyển
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
5 cho một hoặc nhiều readfds, writefds và exceptfds, giá trị trả về tương ứng là
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
5

Biến thể

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
582 hoạt động giống như biến thể
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
575, ngoại trừ nó sửa đổi các đối số
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
12 đã thông qua.
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
575 tạo các đối tượng
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
12 mới và không sửa đổi các đối số của nó

6. 24. 12 Thu gom rác thải

Trình thu gom rác chạy ngầm bất cứ khi nào cần thiết và bạn thường không phải lo lắng về điều đó. Tuy nhiên, trong trường hợp nếu bạn cần phải lo lắng, đây là một số thủ tục bạn có thể sử dụng

Hàm số. gc

Kích hoạt một GC đầy đủ. Nó có thể hữu ích nếu bạn muốn giảm sự can thiệp của GC trong một số phần nhất định của mã bằng cách gọi this ngay trước đó

Hàm số. gc-stat

Trả về một danh sách các danh sách, mỗi danh sách bên trong chứa một từ khóa và thống kê liên quan. Số liệu thống kê hiện tại bao gồm

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
587,
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
588,
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
589 và
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
590

6. 24. 13 Ánh xạ bộ nhớ

Lớp.

Một đối tượng đại diện cho một trang bộ nhớ được ánh xạ. Nó được trả về từ

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
591 và có thể được chuyển đến
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
592 để truy cập. Nó có các khe chỉ đọc sau

Biến thể hiện của. địa chỉ

Địa chỉ ánh xạ. Không hữu ích trong thế giới Đề án, nhưng bạn có thể cần chuyển cái này cho các chức năng nước ngoài

Biến thể hiện của. kích thước

Kích thước của ánh xạ, tính bằng byte

Biến thể hiện của. sự bảo vệ

Bitmask đại diện cho bảo vệ bộ nhớ. Nó là OR theo bit của các hằng số nguyên

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
593,
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
594,
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
595 và
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
596. Xem
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
591 bên dưới để biết chi tiết

Biến thể hiện của. cờ

những lá cờ được chuyển đến

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
591. Xem
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
591 bên dưới để biết chi tiết

Hàm số. kích thước cờ prot của cổng sys-mmap. bù đắp tùy chọn

[POSIX] Ánh xạ tệp vào bộ nhớ bằng cách sử dụng

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
200 [hoặc
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
201 trên Windows]. Trả về một đối tượng
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
12, có thể được truy cập thông qua
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
592

Đối số cổng phải là một cổng hoặc

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
5. Nếu đó là một cổng, nó phải có tệp cơ bản. Nếu là
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
5, ánh xạ trở thành "ẩn danh" [không được hỗ trợ bằng tệp];

Đối số prot chỉ định các bit bảo vệ của vùng bộ nhớ;

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
595

Các trang được ánh xạ có thể được thực thi

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
593

Các trang ánh xạ có thể được đọc

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
594

Các trang ánh xạ có thể được viết

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
596

Các trang có thể không được truy cập

Đối số flags phải là một số nguyên được tạo bởi bitwise-OR của các hằng số sau

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
211

Ánh xạ được chia sẻ giữa các quy trình. Nếu bạn cập nhật các trang được ánh xạ, các quy trình khác đang ánh xạ cùng một khu vực cũng có thể nhìn thấy nó

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
212

Ánh xạ là riêng tư cho quá trình này. Nếu bạn cập nhật các trang được ánh xạ, nó sẽ ở trong quá trình và không hiển thị từ bên ngoài

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
206

Các trang không có tệp sao lưu

Đối số size phải là số nguyên chính xác dương và đối số offset phải là số nguyên chính xác không âm. Chúng chỉ định vùng của tệp sẽ được ánh xạ; . Phần bù phải là bội số của kích thước trang. Nếu offset bị bỏ qua, 0 được giả định. Nếu bạn đang ánh xạ bộ nhớ không hỗ trợ tệp [khi cổng là

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
5], phần bù sẽ bị bỏ qua

Bạn không cần phải

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
215 các trang được ánh xạ một cách rõ ràng;

Hàm số. chiều dài lớp mem make-view-uvector. tùy chọn bù bất biến?

Quy trình này tạo ra một vectơ đồng nhất hoạt động như một “cửa sổ” cho vùng bộ nhớ mem, phải là một đối tượng

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
12. Nếu nội dung bộ nhớ bên dưới thay đổi, nó sẽ hiển thị thông qua uvector. Nếu vùng bộ nhớ có thể ghi được và bạn thay đổi uvector, nó sẽ được phản ánh tới vùng bộ nhớ bên dưới

Đối số lớp phải là một trong các lớp vectơ thống nhất [e. g.

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
12], và chiều dài là chiều dài của uvector được tạo. Độ dài là số phần tử, không phải số byte. Bộ nhớ được truy cập với endianness riêng. Độ dài có thể là
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
5, trong trường hợp đó đến hết vùng bộ nhớ được sử dụng

Đối số offset chỉ định phần bù từ đầu vùng bộ nhớ, theo số byte. Nó phải là bội số của kích thước phần tử uvector

Nếu vùng bộ nhớ là chỉ đọc [i. e. nó được ánh xạ mà không có

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
594], uvector kết quả là bất biến. Mặt khác, nó có thể thay đổi theo mặc định, nhưng bạn có thể đưa ra giá trị thực cho bất biến không?

Vùng bộ nhớ không bị thu gom rác miễn là có các uvector tham chiếu vùng đó

6. 24. 14 Cuộc gọi hệ thống khác

Hàm số. tạm dừng hệ thống

[POSIX] Tạm dừng quy trình cho đến khi nhận được tín hiệu có hành động là thực thi chức năng bắt tín hiệu hoặc chấm dứt quy trình. Hàm này chỉ trả về khi chức năng bắt tín hiệu trả về. Giá trị trả về không xác định

Lưu ý rằng chỉ gọi

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
221 là không đủ ngữ nghĩa ở trên ở cấp Đề án. Trong nội bộ, quy trình này gọi
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
222 với mặt nạ tín hiệu hiện tại

Hàm số. sys-báo động giây

[POSIX] Sắp xếp tín hiệu SIGALRM sẽ được gửi sau vài giây. Các cài đặt trước đó của đồng hồ báo thức bị hủy. Chuyển từ 0 sang giây không lên lịch báo thức mới. Trả về số giây còn lại cho đến khi báo thức đã lên lịch trước đó được gửi [hoặc 0 nếu không có báo thức nào đang hoạt động]

Hàm số. sys-sleep giây. tùy chọn [không thử lại #f]

[POSIX] Tạm dừng chuỗi cuộc gọi cho đến khi hết số giây đã chỉ định

Lưu ý rằng

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
223 của libc có thể trả về trước khoảng thời gian đã chỉ định nếu luồng gọi nhận được tín hiệu; . Vì vậy, bạn có thể tin tưởng vào luồng sẽ ngủ ít nhất trong khoảng thời gian đã chỉ định

Nếu bạn muốn

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
224 trả về sớm khi nhận được tín hiệu, bạn có thể cung cấp giá trị thực cho đối số tùy chọn mà không cần thử lại

Lý do chúng tôi thử lại theo mặc định là GC của Gauche có thể sử dụng tín hiệu để đồng bộ hóa giữa các luồng. Nếu GC được gọi bởi một luồng Trong khi một luồng khác đang ngủ trên

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
223, nó có thể quay lại sớm. Điều này có thể xảy ra thường xuyên nếu các luồng khác phân bổ nhiều, điều này có thể khiến
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
224 không đáng tin cậy

Trả về 0 nếu nó ngủ ngon [điều này luôn đúng nếu không thử lại là sai] hoặc số giây không ngủ nếu nó bị đánh thức bởi một tín hiệu

Để có thể di động trong quá trình triển khai POSIX, hãy giữ số giây nhỏ hơn 65536

Một số hệ thống có thể đang sử dụng

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
229 để triển khai
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
223, vì vậy bạn không nên trộn lẫn giữa
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
224 và
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
232

Hàm số. sys-nanosleep nano giây. tùy chọn [không thử lại #f]

[POSIX] Tạm dừng chuỗi cuộc gọi cho đến khi hết số nano giây đã chỉ định. Đối số nano giây có thể là một đối tượng

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
12 [xem Thời gian] hoặc một số thực

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
234 của hệ thống có thể quay lại trước khoảng thời gian đã chỉ định nếu chuỗi cuộc gọi nhận được tín hiệu; . Vì vậy, bạn có thể tin tưởng vào luồng sẽ ngủ ít nhất trong khoảng thời gian đã chỉ định

Lý do chúng tôi thử lại theo mặc định là GC của Gauche có thể sử dụng tín hiệu để đồng bộ hóa giữa các luồng. Nếu GC được gọi bởi một luồng trong khi một luồng khác đang ngủ trên

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
234, nó có thể trả về sớm. Điều này có thể xảy ra thường xuyên nếu các luồng khác phân bổ nhiều, điều này có thể khiến
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
235 không đáng tin cậy

Trả về

[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
5 nếu nano giây trôi qua [trường hợp này luôn xảy ra nếu
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
240 là
[cond-expand
 [gauche.sys.unsetenv
   .. use sys-unsetenv or sys-clearenv .. ]
 [else
   .. fallback code ...]]
5] hoặc một đối tượng
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
12 cho biết thời gian còn lại nếu
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
235 bị gián đoạn bởi một tín hiệu

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
4

Ghi chú. Trên nền tảng gốc của Windows, chức năng này được mô phỏng bằng cách sử dụng

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
244. Đối số được làm tròn đến độ phân giải mili giây và nó sẽ không bị tín hiệu làm gián đoạn

Hàm số. sys-randomFunction. hạt giống sys-srandom

Trình tạo số giả ngẫu nhiên.

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
245 trả về một số ngẫu nhiên trong khoảng từ 0 đến một số nguyên dương rand_max, bao gồm. Đây là giao diện đơn giản của
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
246. Nếu hệ thống cơ bản không có
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
246, thì sử dụng
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
248

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
249 đặt hạt giống của trình tạo số ngẫu nhiên. Nó sử dụng
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
250 hoặc
[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
251, tùy thuộc vào hệ thống

Mục đích của các chức năng này là cung cấp một trình tạo số ngẫu nhiên tiện dụng [RNG] sẵn có cho các ứng dụng không nhạy cảm với chất lượng và/hoặc tốc độ của RNG. Để phân tích thống kê nghiêm túc, hãy sử dụng Mersenne Twister RNG trong mô-đun

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
252 [xem Trình tạo số ngẫu nhiên Mersenne-Twister]

Biến đổi. RAND_MAX

Bị ràng buộc với một số nguyên dương mà

[cond-expand
 [gauche.sys.setenv
   .. use sys-setenv or sys-putenv .. ]
 [else
   .. fallback code ...]]
245 có thể trả về

Hàm số. sys-get-osfhandle port-or-fd

[Windows] Quy trình này chỉ khả dụng trên nền tảng gốc của Windows. Trả về một trình xử lý tệp Windows được liên kết với cổng đã cho hoặc bộ mô tả tệp số nguyên. Ném lỗi nếu đối số đã cho không có xử lý tệp được liên kết

Chủ Đề