Linux 运行使用stdin的cron作业
我有一个进程,它使用Linux 运行使用stdin的cron作业,linux,select,cron,file-descriptor,Linux,Select,Cron,File Descriptor,我有一个进程,它使用select轮询stdin文件描述符,当我从控制台运行它时,它工作正常。在cron下添加此过程后,我看到输出指示在cron下使用stdin调用select时出现问题。当使用cron时,有没有办法解决这个问题,并使流程认为有一个stdin文件描述符没有接收任何内容?所以我所做的是检查/proc/self/fd/0,如果不是/dev/pts/something,我跳过select命令。使用类似以下内容检查您的fd 0 bool rc=true; 字符链接名[256]; const
select
轮询stdin
文件描述符,当我从控制台运行它时,它工作正常。在cron
下添加此过程后,我看到输出指示在cron
下使用stdin调用select
时出现问题。当使用cron
时,有没有办法解决这个问题,并使流程认为有一个stdin
文件描述符没有接收任何内容?所以我所做的是检查/proc/self/fd/0,如果不是/dev/pts/something,我跳过select
命令。使用类似以下内容检查您的fd 0
bool rc=true;
字符链接名[256];
const char*fd0=“/proc/self/fd/0”;
const char*devPts=“/dev/pts”;
结构统计某人;
lstat(fd0和sb);
readlink(fd0,linkName,sb.st_大小+1);
linkName[sb.st_size]='\0';
if(strncmp(linkName,devPts,sizeof(devPts))!=0)
{
std::我们是否希望看到一些代码以便更好地猜测。我从中获取了代码,但我必须承认,这段代码在控制台和cron
中运行得很好。我想这是我的代码的一个问题,但只是为了确保,在运行需要cron
下的stdin文件描述符的进程时,是否存在已知问题?(这显然不会与流程交互)我建议您查看中的crontab指南,并尽量对您的问题更加简洁,不要假装有人打开链接,检查完整的代码,然后返回建议。