当我尝试使用popen执行此操作时,它会返回此错误,但是当我在终端中运行它时,它会工作!
popen("ssh -n -f *.*.*.* 'sshfs -o nonempty *.*.*.*:/home/foo/bar/ /foo1/foo2/foo3'", "r");
错误:
ssh_exchange_identification: Connection closed by remote host
我使用公钥和私钥来ssh而不使用密码,并且它们正常工作,因为此命令在终端中运行完美。
我把它更改为:
popen("ssh -n -f *.*.*.* `sshfs -o nonempty *.*.*.*:/home/foo/bar/ /foo1/foo2/foo3`", "r");
它也会返回错误。
错误:
fuse: bad mount point `/foo1/foo2/foo3': No such file or directory
Cannot fork into background without a command to execute.
我也尝试过以这种方式调动内部""
:\" \"
但它会挂起!
答案 0 :(得分:1)
将ssh替换为/usr/bin/ssh
,对sshfs等其他命令执行相同操作。指定命令的完整路径/usr/sbin/foo
或任何情况。 popen不一定使用命令行中的相同shell来执行命令。检查您的文档。