当前位置: 首页 > 知识库问答 >
问题:

使用C将ssh会话退出到linux

万铭
2023-03-14

我正在运行一个通过ssh会话运行的程序。这意味着我使用putty连接到一个linux,程序开始,使用/etc/bash.bashrc文件。在某个时候,程序应该结束,通过putty的ssh会话应该断开连接。我现在用下面的代码做了一些事情,但它不起作用:程序退出,并留在linux shell中,这意味着putty已经连接好了。我所期望的是命令“exit”来结束putty ssh会话。

 char file_name[20];
 pid_t pid = fork();
        if (pid == 0)
        {
            printf("Starting vi\r\n");
            char external_cmd[200] = "vi ";
            strcat(external_cmd, file_name);
            system(external_cmd);
        } else 
        {
            waitpid(pid,0,0);
            printf("Exit..\r\n");
            system("exit");

        }

谢谢你的帮助。

共有1个答案

于嘉誉
2023-03-14

这段代码不能完成任何事情:

system("exit");

system()sh下运行子进程:

system()函数的行为将与使用fork()创建子进程相同,并且子进程使用execl()调用sh实用程序,如下所示:

execl(<shell path>, "sh", "-c", command, (char *)0);
#include <unistd.h>
#include <signal.h>
...
pid_t parent = getppid();
kill( parent, SIGKILL );
 类似资料:
  • 问题内容: 我用来登录远程服务器。 问题 : 当我在工作场所时,它始终保持连接并且可以正常工作。不幸的是,在我在家中与远程服务器连接后,终端会在10到15分钟内死机。 控制台上没有错误/超时报告,但是光标不能再移动了。 输入检查登录用户时,那里有一些僵尸登录用户,我必须手动将其杀死。 这很烦人。谁能帮我? 问题答案: 在客户端运行的ssh守护程序(sshd),如果客户端变为静默(即,不发送信息),

  • 我正在编写一个python脚本,该脚本发送到网络中的每台交换机,并发出一个copy running-config TFTP命令,备份交换机的运行配置。我在windows上使用Python2.7中的paramiko库。 脚本本身非常简单,它所做的只是创建一个名为“备份”的目录(如果还不存在的话),以及另一个名为“今天的日期”的目录,然后将该目录用于TFTP。并启动TFTP服务器。然后它只需通过SSH

  • 我打算使用paramiko在远程主机上运行几个命令,但ssh会话在运行一个命令后关闭。 下面列出的代码: 那么有什么方法可以阻止ssh会话关闭吗?或者帕拉米科的替代品? 有什么方法可以让paramiko ssh会话一直处于活动状态吗? paramiko调试模式信息返回如下: 启动线程(客户端模式):0x2657E10L 已连接(版本1.99,客户端组件-5.20) kex ALGOS:[u'dif

  • 我用JSch制作了一个SSH客户端。客户端与我的Apache Mina SSH服务器正常工作。但当我用真正的设备测试它时,它失败了。 这是客户端的代码: 代码此时失败: 连接到主机时出错:127.0.0.1,端口:22 com。jcraft。jsch。JSCHEException:com上的会话已关闭 。jcraft。jsch。一场openChannel(Session.java:861) 我的问

  • 问题内容: 我正在重写我在Python中编写的Bash脚本。该脚本的关键是 我在使用paramiko进行嵌套身份验证时遇到问题。我找不到适合我具体情况的任何示例,但是我能够在远程主机上找到带有 sudo的 示例。 第一种方法写入标准输入 第二个创建通道并使用类似于套接字的 send 和 recv 。 我能够使 stdin.write 与 sudo一起使用 ,但在远程主机上的 ssh 上却不起作用。

  • 中描述的声明性基和ORM映射函数 映射器配置 是ORM的主要配置接口。配置映射后,持久性操作的主要使用接口是 Session . 会话基础 会议的作用是什么? 使用会话的基础知识 打开和关闭会话 构建begin/commit/rollback块 使用sessionmaker 查询(1.x样式) 查询(2.0样式) 添加新项目或现有项目 删除 冲洗 过期/刷新 使用任意WHERE子句更新和删除 自动