主题说明了一切:运行在linux下的程序需要知道它是如何启动的。怎么做?
谢谢!
--皮特
最佳答案
当在命令行运行时,通常至少有一个标准文件描述符是一个终端,即使不是,通常也存在一个控制终端。这在从cron运行时通常不是真的。
if (isatty(STDIN_FILENO) || isatty(STDOUT_FILENO) || isatty(STDERR_FILENO))
puts("One of my standard file descriptors is a terminal");
int fd = open("/dev/tty", O_RDWR);
if (fd != -1) {
puts("I have a controlling terminal");
close(fd);
}
还有其他的区别,比如环境等等,但是这些都不可靠。(即使是那些
getppid
解决方案也不一定有效-cron可能在sh中开始您的工作。)