C++程序在调用'mkfifo'时挂起(Lustre FS)
C++ program is hanging when invoking 'mkfifo' (Lustre FS)
我正在运行C++程序STAR(https://github.com/alexdobin/STAR(,这在我的研究领域很常见。
当我在服务器上运行此软件时,一切正常。
当我在另一台服务器上运行相同的软件(FS=lustre(时,程序冻结
我的命令行是:
/path/to/star/STAR-2.7.1a/source/STAR --genomeDir /path/to/reference/
--readFilesIn jeter1.fastq.gz jeter1.fastq.gz
--readFilesCommand gunzip -c --outReadsUnmapped None --outSAMattributes All |
head -n 1000
我使用 strace 来查看发生了什么:
(...)
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=54748, si_uid=24382, si_status=0, si_utime=0, si_stime=0} ---
getxattr("./_STARtmp//readFilesIn.info", "security.shook_state", 0x7ffd5a10b6c0, 1024) = -1 ENODATA (No data available)
open("./_STARtmp//readFilesIn.info", O_RDONLY) = 7
read(7, "-rw-r-----. 1 lindenbp fg0073 10"..., 8191) = 66
read(7, "", 8191) = 0
close(7) = 0
write(6, "exec > "./_STARtmp/tmp.fifo.read"..., 82) = 82
lseek(6, 0, SEEK_SET) = 0
read(6, "exec > "./_STARtmp/tmp.fifo.read"..., 8191) = 82
read(6, "", 8191) = 0
write(3, "-rw-r-----. 1 lindenbp fg0073 10"..., 172) = 172
close(6) = 0
chmod("./_STARtmp//readsCommand_read1", 0700) = 0
vfork() = 54750
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=54750, si_uid=24382, si_status=0, si_utime=0, si_stime=0} ---
getxattr("./_STARtmp/tmp.fifo.read1", "security.shook_state", 0x7ffd5a10b6c0, 1024) = -1 ENODATA (No data available)
open("./_STARtmp/tmp.fifo.read1", O_RDONLY ######### <= FREEZES HERE
(...)
所以我认为它冻结在这里的某个地方(?(:https://github.com/alexdobin/STAR/blob/bb207df0cb62560c9194247a0480182ccbe1dca5/source/Parameters_openReadsFiles.cpp#L38 当软件创建另一个进程来gunzip -c
gzip 输入文件时。
我还尝试使用将 tmp 目录指定为"/tmp"的选项,但我得到了相同的结果。
什么可以解释这种行为,有没有办法解决它?
谢谢
我从作者那里得到了答案 https://github.com/alexdobin/STAR/issues/687
该程序生成了一个缺少 shebang delcaration 的 shell 脚本:这阻止了 fifo 流的工作。
相关文章:
- 使用文件系统时仍然需要链接到带有 C++20 的 stdc++fs?
- Node.js fs.open() 在尝试打开 4 个以上的命名管道 (FIFO) 后挂起
- 如何将C++17 stdc++fs库链接到混合语言(C++和Fortran)CMake项目
- OpenCV 与 C++,使用 cv::utils::fs::glob() 函数
- OpenCV: fs.open fails
- C++程序在调用'mkfifo'时挂起(Lustre FS)
- 当我使用fs.rdbuf()复制文件时,我会丢失一些数据
- 在 boost::fs::p ath 中转义空白
- 跨平台原子写入/重命名,C++中没有事务性 FS
- 内联 asm 分配给"FS:0":处理程序未注册为安全处理程序
- GCC6 中对 'rt'、'pthread'、'stdc++fs' 的未定义引用
- 如何使用boost::fs只加载30个最新文件,而不是整个目录
- "fs::path::string"的未解析重载函数类型
- 实验::在使用-lsdc++fs选项后使用GCC6时出现文件系统链接器错误
- 使用侦查工具函数tsk_fs_open_img()返回一个错误,认为该FS不是FAT FS
- 通过 FS 寄存器访问生成进程的 TIB?
- 使用nmake编译Qt给出命令行错误D8021:无效的数字参数' /FS '
- 如何跟踪emscripten包含FS的原因
- 如何在 Vista 和 Win7 上连接 FS 微筛选器驱动程序和我的应用程序?