不可靠的system()在C ++中返回值

时间:2017-04-24 05:04:40

标签: c++ linux

我有一个C ++模块,其基本工作是检查远程机器中是否存在目录。我正在使用system()调用。

ssh user@remote-machine  [ -d  /remote_dir/test] 

这样可以很好地给出结果,但间歇性地测试失败(测试目录总是在那里)。

现在可能是什么原因以及如何检查这个。

  1. 测试成功,但失败原因(system()调用不可靠)。
  2. 可能是系统之间的网络问题。如果是,如何检查?
  3. 提前致谢。

    SKP

1 个答案:

答案 0 :(得分:0)

  1. 确保您的连接适用于指定的ssh端口:

    $ telnet remote-machine 22
    
  2. 它应该显示连接消息,否则什么都没有(意味着SSH不允许通过本地或远程计算机上的IP firwall连接)。

    1. 如果不是第一个,则检查凭据以启动" system()"命令。因为如果您使用来自用户" user1"的控制台进行system()调用,但模块是从用户" user2"开始的。在Linux系统中。在这种情况下,访问没有密码的远程服务器的凭据将失败,因为您在例如" user1"中创建了ssh密钥。而不是" user2" - 在/home/(username)/.ssh中查看。如果是这样调试,请使用

      ...system('ls -l ~/.ssh');
      
    2. 如果没有文件,则应该为启动此模块的用户创建连接密钥。