Автоматическое измерение? В Fortran [дубликат]

Когда shell=True оболочка является дочерним процессом, а командами являются ее дочерние элементы. Таким образом, любые SIGTERM или SIGKILL будут убивать оболочку, но не ее дочерние процессы, и я не помню хороший способ сделать это. Лучший способ, который я могу придумать, - использовать shell=False, иначе, если вы убьете процесс родительской оболочки, он оставит процесс с отсутствующей оболочкой.

5
задан francescalus 21 June 2017 в 13:00
поделиться

1 ответ

Вы хотите использовать распределяемые массивы:

PROGRAM mytest
  IMPLICIT NONE
  INTEGER :: i, j, k, mysum
  REAL, DIMENSION(:,:), allocatable :: c   !<-  c is allocatable, rank 2

  ! Let array c be a k-by-k**2 array
  ! Determine k within the program by some means...for example,
  mysum=0
  DO i=1, 3
    mysum=mysum+1
  END DO
  k=mysum

  WRITE(*,*) "k=", k
  WRITE(*,*) "k**2=", k**2
  WRITE(*,*)

  allocate(c(k,k**2))                  ! <-- allocate array c with supplied shape

  DO i=1,size(c,1)
    WRITE(*,"(100(3X,F3.1))") (c(i,j), j=1,size(c,2))
  END DO

  deallocate(c)                        ! <-- deallocate when done
END PROGRAM mytest
11
ответ дан Jonathan Dursi 17 August 2018 в 10:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: