Changeset 15358
- Timestamp:
- 07/30/20 14:09:11 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abcl/src/org/armedbear/lisp/run-program.lisp
r15041 r15358 33 33 (require :java) 34 34 35 (defparameter *implementations* 36 '(:java-1.6 :java-1.7 :java-1.8)) ;; UNUSED 37 (defun not-java-6 () 38 (not (find :java-1.6 *features*))) 35 (defun not-java-6-p () 36 (not (find :java-6 *features*))) 37 38 (defun pre-java-11-p () 39 (or (find :java-6 *features*) 40 (find :java-7 *features*) 41 (find :java-8 *features*))) 39 42 40 43 (export '(run-program process process-p process-input process-output … … 169 172 (java:jcall "directory" process-builder (java:jnew "java.io.File" (namestring directory)))) 170 173 (let ((process 171 (if (not-java-6 )174 (if (not-java-6-p) 172 175 (make-process (%process-builder-start process-builder) 173 176 input-stream-p output-stream-p error-stream-p) … … 189 192 (threads:make-thread (lambda () (to-file error file :append appendp)))))) 190 193 (when (or wait 191 (not-java-6 )194 (not-java-6-p) 192 195 (process-wait process)) 193 196 process))))) … … 223 226 (let ((redirect (if (eq value T) 224 227 ;; Either inherit stdio or fail 225 (if (not-java-6 )228 (if (not-java-6-p) 226 229 +inherit+ 227 230 (signal 'implementation-not-available … … 238 241 ((NIL) 239 242 (return-from setup-input-redirection)))))) 240 (if (not-java-6 )243 (if (not-java-6-p) 241 244 (java:jstatic "from" "java.lang.ProcessBuilder$Redirect" file) 242 245 file))))) 243 (when (not-java-6 )246 (when (not-java-6-p) 244 247 (java:jcall "redirectInput" process-builder redirect)) 245 248 redirect)) … … 251 254 (defun setup-output-redirection (process-builder value errorp if-does-exist) 252 255 (let ((redirect (if (eq value T) 253 (if (not-java-6 )256 (if (not-java-6-p) 254 257 +inherit+ 255 258 (if errorp … … 269 272 (:append (setf appendp T)) 270 273 ((NIL) (return-from setup-output-redirection)))) 271 (if (not-java-6 )274 (if (not-java-6-p) 272 275 (if appendp 273 276 (java:jstatic "appendTo" "java.lang.ProcessBuilder$Redirect" file) 274 277 (java:jstatic "to" "java.lang.ProcessBuilder$Redirect" file)) 275 278 (list file appendp)))))) 276 (when (not-java-6 )279 (when (not-java-6-p) 277 280 (if errorp 278 281 (java:jcall "redirectError" process-builder redirect) … … 369 372 (defun %process-pid (jprocess) 370 373 (if (ext:os-unix-p) 371 ;; TODO: memoize this 372 (let ((field (java:jcall "getDeclaredField" (java:jclass "java.lang.UNIXProcess") "pid"))) 374 (let* ((process-class 375 (if (pre-java-11-p) 376 "java.lang.UNIXProcess" 377 "java.lang.ProcessImpl")) 378 (field 379 (java:jcall "getDeclaredField" process-class "pid"))) 373 380 (java:jcall "setAccessible" field java:+true+) 374 381 (java:jcall "get" field jprocess))
Note: See TracChangeset
for help on using the changeset viewer.