Linux /后缀管道运行时,dev/ttyACM0文件不存在

Linux /后缀管道运行时,dev/ttyACM0文件不存在,linux,go,serial-port,postfix,Linux,Go,Serial Port,Postfix,当我以普通用户的身份手动运行脚本时,一切都正常。但若收到一封电子邮件并通过管道传输到Go脚本中,我将无法打开串行端口,因为该文件不存在 postfix 1239 1025 0 13:20 ? 00:00:00 pipe -n watchParadox -t unix flags=F user=watch argv=/usr/local/bin/watch -paradox watch 1240 1239 0 13:20 ? 00:00:00 /usr/local/bin/wa

当我以普通用户的身份手动运行脚本时,一切都正常。但若收到一封电子邮件并通过管道传输到Go脚本中,我将无法打开串行端口,因为该文件不存在

postfix   1239  1025  0 13:20 ? 00:00:00 pipe -n watchParadox -t unix flags=F user=watch argv=/usr/local/bin/watch -paradox
watch     1240  1239  0 13:20 ? 00:00:00 /usr/local/bin/watch -paradox
脚本在已添加到拨号组的监视用户下运行,为了确保,后缀用户也在拨号组中

在我的脚本中,我运行了ls-la命令来找出哪些文件确实存在:

drwxr-xr-x   6 root root  380 Feb 25 13:19 .
dr-xr-xr-x. 18 root root 4096 Feb 22 17:53 ..
lrwxrwxrwx   1 root root   11 Feb 25 13:19 core -> /proc/kcore
lrwxrwxrwx   1 root root   13 Feb 25 13:19 fd -> /proc/self/fd
crw-rw-rw-   1 root root 1, 7 Feb 25 13:19 full
drwxr-xr-x   2 root root    0 Feb 25 13:19 hugepages
lrwxrwxrwx   1 root root   28 Feb 25 13:19 log -> /run/systemd/journal/dev-log
drwxrwxrwt   2 root root   40 Feb 25 13:19 mqueue
crw-rw-rw-   1 root root 1, 3 Feb 25 13:19 null
lrwxrwxrwx   1 root root    8 Feb 25 13:19 ptmx -> pts/ptmx
drwxr-xr-x   2 root root    0 Feb 25 13:19 pts
crw-rw-rw-   1 root root 1, 8 Feb 25 13:19 random
drwxrwxrwt   2 root root   40 Feb 25 13:19 shm
lrwxrwxrwx   1 root root   15 Feb 25 13:19 stderr -> /proc/self/fd/2
lrwxrwxrwx   1 root root   15 Feb 25 13:19 stdin -> /proc/self/fd/0
lrwxrwxrwx   1 root root   15 Feb 25 13:19 stdout -> /proc/self/fd/1
crw-rw-rw-   1 root root 5, 0 Feb 25 13:19 tty
crw-rw-rw-   1 root root 1, 9 Feb 25 13:19 urandom 
我确信以下文件存在,但在执行后缀管道时不会显示

crw-rw---- 1 root dialout 166, 0 25. úno 13.19 ttyACM0
我在文件上试过chmod 777,但在那个部门没有运气。通过使用Go功能的库打开文件:

os.OpenFile("ttyACM0", syscall.O_RDWR|syscall.O_NOCTTY|syscall.O_NONBLOCK, 0666)
结果与

ttyACM0:没有这样的文件或目录

问题不在于路径,因为我尝试了相对(使用chdir)和绝对,结果完全相同

我甚至禁用了SELinux,这不是我想要做的,但为了寻找解决方案,我尝试了任何事情


代码是正常的,因为脚本的手动执行可以正常通过。我认为Linux设置有问题。

ttyACM0的正确路径是/dev/ttyACM0。您可以定义udev规则来设置文件附着时的文件模式


如果您的程序无法访问该问题,则可能是您的程序运行chrooted()。

这似乎是真正的Linux问题以及我不了解的一些底层结构。我运行的是Fedora25,但Debian8上没有出现问题。

路径不正确,因为如果您位于/dev目录中,则应该可以通过相对路径访问它。即使-我没有尝试chrooting(它将当前文件夹显示为/var/spool/postfix)和/dev/ttyACM0的绝对路径,但结果是一样的。但如果我想得对的话——在列出/dev文件夹的内容时,我难道不能在其中看到更多的设备吗?