i have shell script , c program
#!/bin/bash in `seq 1 10000` (flock -x 200 // 200? ./taska ) 200> lockfile done
in c program, related code snippets are:
int fd = open("lockfile", o_wronly|o_creat); // permission should put here? for(i=0;i<10000;i++){ if(fd==-1) printf("open file fails\n"); if(flock(fd, lock_ex)==0 ){ // lock file taskb(); // here want } if (flock(fd, lock_un)==0) // after finishing tasks, unlock { printf("c unlock\n"); } }
i want run shell script , c program on same host , hope can run taska
, taskb
@ alternately, in different time i'm not familiar flock, there permission problems or open file failures
for example, if run c program , let finish , run again, "open file failure" , permission is
---xr-x--t 1 esolve 200036 0 may 6 02:18 lockfile
how modify scripts , code? thanks!
the 200 in shell script file descriptor — see manual page flock(1)
.
your problem file permissions open(2)
takes 3 arguments when include o_creat
; third argument should permissions on file. when don't specify third argument, quasi-random value chosen you. takes lot of analysis detect problem because open(2)
has signature:
#include <fcntl.h> int open(const char *path, int oflag, ...);
it variable-length argument list function, using 2 arguments ok of time, except when o_creat
specified needs third argument.
Comments
Post a Comment