需要用户提示的 cron-job 会发生什么?

Phi*_*ide 6 cron input

假设我正在通过crontab -e以下方式运行 C 程序:

15 11 * * * time /home/philip/school/a1_c_program.c > /home/philip/logs/time2execute.txt
Run Code Online (Sandbox Code Playgroud)

但是 C 程序要求用户输入一些文本。

在这种情况下会发生什么?在我重新启动之前,C 脚本是否只是在我的机器上保持一个打开的进程?或者它会在一段时间后自动关闭?

如果我可以附加到进程并输入所需的文本, time 命令是否会完成运行并将某些内容打印到新创建的文本文件中?

我注意到上面的 cronjobtime2execute.txt文件已创建但为空。

编辑:一旦我修复了我的 crontab 以指向编译的 c 程序而不是源文件。文本文件包含用户会看到的提示文本。

pet*_*erh 14

由 cron 守护程序运行的工具从cron,而不是从您的 shell获取环境。在cron没有这些工具提供了标准输入,更确切地说它提供了从一个伪造的一个/dev/null设备。

因此,如果该工具需要标准输入,它会在尝试读入输入数据时出现文件结束错误。这取决于工具,它将用它做什么。在大多数情况下,它与您通过使用

programname </dev/null
Run Code Online (Sandbox Code Playgroud)

如果它试图直接读取终端,比如ncurses应用程序,那么它的终端初始化序列将不起作用。的ncurses_init()通话将赋予它一个错误的结果。在这种情况下,它还取决于工具对错误结果的处理方式。大多数工具只是退出并显示错误消息。这取决于cron配置,它将如何处理此错误消息(默认情况下,它会记录并通过电子邮件发送给您)。

旁注:您的cron线路不好,您尝试.c直接运行源代码。首先,您必须将其编译为二进制可执行文件。此外,时间工具将其输出放入标准错误输出,您最好将其输出(以及其 std 错误)重定向到某个日志文件。