如何调试readCreateProcessWithExitCode执行失败的问题?
Haskell readCreateProcessWithExitCode 执行失败排查方案
问题概况
- 执行代码:
readProcessWithExitCode "./tlsfSynt.sh" ltlCommandArgs [] - 报错信息:
tslsynth: ./tlsfSynt.sh: readCreateProcessWithExitCode: posix_spawnp: does not exist (No such file or directory)
- 已确认当前目录存在该文件,通过
getDirectoryContents "."可在目录列表中看到该文件。
排查及解决方法
检查文件执行权限
即使文件存在,若无可执行权限也会触发该错误。可通过终端执行chmod +x ./tlsfSynt.sh添加权限,或在代码中提前执行权限修改:_ <- readProcessWithExitCode "chmod" ["+x", "./tlsfSynt.sh"] []验证脚本shebang有效性
查看tlsfSynt.sh首行的shebang(如#!/bin/bash),确认系统中存在对应的解释器。若shebang路径错误(比如指定了不存在的解释器路径),需修改为正确路径,或安装缺失的解释器。确认程序实际工作目录
代码中使用的相对路径依赖程序的当前工作目录,可能和你预期的目录不一致。先打印当前工作目录确认:currentDir <- getCurrentDirectory print currentDir若目录不符,改用脚本的绝对路径执行,或先切换到目标目录:
setCurrentDirectory "/实际脚本所在目录路径" readProcessWithExitCode "./tlsfSynt.sh" ltlCommandArgs []排查文件名匹配问题
确认文件名完全一致,避免出现扩展名隐藏(如tlsfSynt.sh.txt)或大小写错误(类Unix系统区分大小写)。
内容的提问来源于stack exchange,提问作者Test
相关产品推荐
相关产品推荐

