import 'dart:io'; import 'dart:async'; void main() { String command = 'dart'; // 실행할 명령어 List arguments = ['main.dart']; // 명령어 인자 (필요시 설정) bool isRunning = false; // 프로세스 실행 여부를 추적하는 변수 // 프로세스를 실행하고, 종료되면 다시 시작하는 함수 void startProcess() { if (isRunning) { print('프로세스가 이미 실행 중입니다.'); return; // 이미 실행 중인 경우 함수 종료 } isRunning = true; // 프로세스 실행 중임을 표시 Process.start(command, arguments).then((process) { print('프로세스가 시작되었습니다.'); // 프로세스의 stdout과 stderr를 실시간으로 읽고 출력 process.stdout.transform(SystemEncoding().decoder).listen((data) { print(data); // 표준 출력 데이터 출력 }); process.stderr.transform(SystemEncoding().decoder).listen((data) { print('Error: $data'); // 표준 오류 출력 데이터 출력 }); // 프로세스 종료를 감지 process.exitCode.then((exitCode) { print('프로세스가 종료되었습니다. 종료 코드: $exitCode'); isRunning = false; // 프로세스 종료 후, 실행 상태를 false로 변경 startProcess(); // 프로세스 종료 후 다시 실행 }); }).catchError((e) { print('프로세스를 시작하는 중 오류가 발생했습니다: $e'); isRunning = false; // 오류가 발생하면 실행 상태를 false로 변경 // 오류가 발생한 경우 잠시 후 다시 시도 Future.delayed(Duration(seconds: 5), startProcess); }); } startProcess(); // 처음 프로세스를 시작 }