[英]How can I lock a file from a program started as a cron job on Linux?
我在代码中使用fcntl来锁定文件并解锁以在Windows中像互斥锁一样练习...我在Linux中手动启动我的应用程序,结果正确,应用程序运行平稳...但是我被要求制作一个bash脚本每天启动应用程序。...我的脚本是
cd myapppaht
./myapp
但是,当我尝试锁定文件位置时出现[Bad file descriptor]
... crontab任务练习作为手动用户root的功能不强大吗?
#define writew_lock(fd , offset , whence , len) lock_reg((fd) , F_SETLKW , F_WRLCK , (offset) , (whence) , (len))
#define un_lock(fd , offset , whence , len) lock_reg((fd) , F_SETLK , F_UNLCK , (offset) , (whence) , (len))
在没有看到您的锁定代码或不知道如何从cron启动的情况下,没有太多事情要做。
根据有关文件锁的GNU C库手册,当请求未打开文件描述符进行写访问的写锁时,您可以获得EBADF
(错误文件描述符)。
fcntl手册页补充说,当使用F_SETLKW
,如果文件描述符打开模式与请求的锁定类型不匹配,则可以获取EBADF
。 由于您的应用程序在手动启动时运行平稳,因此我怀疑这是问题所在。
open
的调用的响应。 根据此Linux crontab手册页 ,每个用户都有自己的crontab,并且任何给定crontab中的命令都将以拥有crontab的用户身份执行。 这取决于cron的版本,因为某些(旧)版本在crontab文件本身中指定了用户。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.