繁体   English   中英

如何在Linux上作为cron作业启动的程序中锁定文件?

[英]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启动的情况下,没有太多事情要做。

fcntl

根据有关文件锁GNU C库手册,当请求未打开文件描述符进行写访问的写锁时,您可以获得EBADF (错误文件描述符)。

fcntl手册页补充说,当使用F_SETLKW ,如果文件描述符打开模式与请求的锁定类型不匹配,则可以获取EBADF 由于您的应用程序在手动启动时运行平稳,因此我怀疑这是问题所在。

  • 由此,我将检查您对open的调用的响应。

crontab

根据此Linux crontab手册页 ,每个用户都有自己的crontab,并且任何给定crontab中的命令都将以拥有crontab的用户身份执行。 这取决于cron的版本,因为某些(旧)版本在crontab文件本身中指定了用户。

  • 您也可以检查crontab设置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM