需要用户提示的 cron 作业会发生什么情况?

需要用户提示的 cron 作业会发生什么情况?

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

15 11 * * * time /home/philip/school/a1_c_program.c > /home/philip/logs/time2execute.txt

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

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

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

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

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

答案1

cron由 cron 守护进程运行的工具从,而不是从您的 shell获取环境。它cron不为这些工具提供标准输入,更确切地说,它提供来自/dev/null设备的伪造输入。

因此,如果该工具需要标准输入,它将在尝试读入输入数据时出现文件结束错误。这取决于工具,用它来做什么。在大多数情况下,它与通过使用以下命令调用程序来运行它是一样的:

programname </dev/null

如果它尝试直接读取终端(例如ncurses应用程序),则其终端初始化序列将不起作用。该ncurses_init()调用将给出错误结果。在这种情况下,它对错误结果的处理也取决于工具。大多数工具只是退出并显示错误消息。这取决于cron配置,它将如何处理此错误消息(默认情况下,它会记录并通过电子邮件向您发送)。

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

相关内容