【问题标题】:How to start C Program on Server to run in background如何在服务器上启动 C 程序以在后台运行
【发布时间】:2016-12-21 05:23:51
【问题描述】:

我编写了一个 C 程序并在我的 linux 计算机上对其进行了测试。

我现在已将它上传到我的服务器,并希望它作为后台进程一直在那里运行。

如何启动一个在我关闭 putty 后会继续运行的程序?

感谢您的帮助!

【问题讨论】:

    标签: linux server background-process


    【解决方案1】:

    您可以通过在调用中添加 & 来让程序继续运行

    所以当你之前在 SSH 中像这样执行你的代码时:

    ./mycode
    

    你会喜欢的:

    ./mycode &
    

    【讨论】:

      【解决方案2】:

      如果你想在后台运行你的程序,你必须在命令中添加“&”字符。

      ./program &
      

      但是进程会关联到当前的 tty。如果您关闭当前的 tty(在您的情况下是 SSH 会话),则 SIGHUP 信号将发送到与 tty 关联的所有进程,导致它们完成。您可以使用 ps 命令查看与一个进程关联的 tty。

      disown 命令可用于标记作业,以便在父 shell 接收到 SIGHUP 信号时不会向它们发送信号。在关闭当前 tty 之前,您可以编写:

      disown %jobID 
      

      当您在后台运行程序时,您可以看到括在括号中的 jobID。您还可以使用 jobs 命令查看 jobID。

      您可以直接运行命令,这样就不会向他发送 SIGHUP 信号。为此,您可以使用 nohup 命令。

      nohup ./program &
      

      避免以 SIGHUP 信号结束程序的另一种方法是在程序中捕获此信号。在 C 程序中,您可以使用 signal.h 中的 signal 函数来完成此操作

      但如果你想将程序作为守护进程或服务器运行,最好编写一个 Systemd 服务或 System V 初始化脚本。

      【讨论】:

        【解决方案3】:

        在执行程序的过程中,如果您想在后台运行程序。 先按ctrl + z,然后输入bg

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-07-27
          • 1970-01-01
          • 2013-08-13
          • 2021-05-02
          • 1970-01-01
          • 2020-12-04
          • 2020-06-17
          相关资源
          最近更新 更多