http://www.hackerschool.org/HS_Boards/zboard.php?desc=asc&no=2771 [º¹»ç]
cslab:~/SystemSoftware(4)% gcc -o test ss.c
ss.c:7: error: redefinition of `struct flock'
ÇÑ ÆÄÀÏÀ» ÀÛ¾÷ÁßÀ϶§ ´Ù¸¥ °÷¿¡¼ Á¢¼Ó ¸øÇÏ°Ô ¶ôÀ» °Å´Â ÇÁ·Î±×·¥À»
½Ã½ºÅÛ È£Ãâ??À» Çؼ ÇÏ´Â °Çµ¥¿ä
Çб³ Unix ¼¹ö¿¡¼ gcc ·Î ÄÄÆÄÀÏÇϴµ¥
ÀÌ·± ¿¡·¯°¡ ¶ß³×¿ä ¹öÀü ¹®Á¦¶ó°í º» °Í°°Àºµ¥
¾î¶»°Ô ÇØ°á ÇÒ ¼ö ÀÖÀ»±î¿ä?
Ȥ½Ã Äڵ忡 ¹®Á¦°¡ ÀÖ´Ù¸é ÄÚ¸àÆ® ºÎŹµå¸³´Ï´Ù.
------------------------------------------------------------------------------------------------
#include <fcntl.h>
#include <errno.h>
#define F_RDLCK 01/* read lock */
#define F_WRLCK 02/* write lock */
#define F_UNLCK 03/* release lock */
struct flock {
short l_type; /* record locking type */
short l_whence; /* same as lseek */
long l_start; /* start of locked segment */
long l_len; /* byte length of locked segment if 0, lock to EOF */
short l_sysid;
short l_pid;
};
/* values for l_type */
int main(int argc, char *argv[])
{
struct flock lock;
int fd;
char command[100];
if ((fd = open(argv[1], O_RDWR)) == -1)
{
perror(argv[1]);
exit(1);
}
lock.l_type = F_WRLCK;
lock.l_whence = 0;
lock.l_start = 0L;
lock.l_len = 0L; /* whole file address space */
if (fcntl (fd, F_SETLK, &lock) == -1)
{
if (errno == EACCES)
{
printf("%s busy --try later\n", argv[1]);
exit(2);
}
else
{
perror(argv[1]);
exit(3);
}
sprintf(command, "vi %s\n", argv[1]);
system(command);
lock.l_type = F_UNLCK; /* unlock file */
fcntl(fd, F_SETLK, &lock);
close(fd);
exit(0);
}
|
Hit : 5915 Date : 2010/11/22 04:19
|