您的位置:首页 > 运维架构 > Linux

Linux _文件操作demo

2016-03-31 13:04 435 查看
main1.c

#include <stdlib.h>
#include <stdio.h>

int main(void)
{
int i;

char buff[] = "hello world\n";
write(1, buff, sizeof(buff));
write(2, buff, sizeof(buff));

return 0;
}


main2.c

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
char buff[1024];
int cnt;

cnt = read(0, buff,  sizeof(buff));
write(1, buff, cnt);

return 0;
}


main3.c

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

#include <stdlib.h>
#include <stdio.h>

#define FILE1_NAME "shell_program.pdf"
#define FILE2_NAME "shell_program2.pdf"

int main(void)
{
int file1, file2;
char c;

file1 = open(FILE1_NAME, O_RDONLY);
if (file1 < 0) {
printf("open file %s failed\n", FILE1_NAME);
}

file2 = open(FILE2_NAME, O_WRONLY|O_CREAT, S_IRUSR|S_IWUSR);
if (file1 < 0) {
printf("open file %s failed\n", FILE2_NAME);
}

while(read(file1, &c, 1) == 1) {
write(file2, &c, 1);
}

return 0;
}


main4.c

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

#include <stdlib.h>
#include <stdio.h>

#define FILE1_NAME "shell_program.pdf"
#define FILE2_NAME "shell_program2.pdf"

int main(void)
{
int file1, file2;
//char c;
char buff[1024];
int ret;

file1 = open(FILE1_NAME, O_RDONLY);
if (file1 < 0) {
printf("open file %s failed\n", FILE1_NAME);
}

file2 = open(FILE2_NAME, O_WRONLY|O_CREAT, S_IRUSR|S_IWUSR);
if (file1 < 0) {
printf("open file %s failed\n", FILE2_NAME);
}

while((ret = read(file1, buff, sizeof(buff))) > 0) {
write(file2, buff, ret);
}

return 0;
}


main5.c

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

#include <stdlib.h>
#include <stdio.h>

#define FILE1_NAME "main5.c"
#define FILE2_NAME "main5_2.c"

#define SIZE 50

int main(void)
{
int file1, file2;
//char c;
char buff[1024];
int ret;

file1 = open(FILE1_NAME, O_RDONLY);
if (file1 < 0) {
printf("open file %s failed\n", FILE1_NAME);
}

file2 = open(FILE2_NAME, O_WRONLY|O_CREAT, S_IRUSR|S_IWUSR);
if (file1 < 0) {
printf("open file %s failed\n", FILE2_NAME);
}

lseek(file1, -SIZE, SEEK_END);

while((ret = read(file1, buff, SIZE)) > 0) {
write(file2, buff, ret);
}

return 0;
}


main6.c

#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>

#define FILE_NAME   "test.txt"

int flock_set(int fd, int type)
{
printf("pid=%d into...\n", getpid());

struct flock flock;
flock.l_type = type;
flock.l_whence = SEEK_SET;
flock.l_start = 0;
flock.l_len = 0;
flock.l_pid = -1;

fcntl(fd, F_GETLK, &flock);

if (flock.l_type != F_UNLCK) {
if (flock.l_type == F_RDLCK) {
printf("flock has been set to read lock by %d\n", flock.l_pid);
} else if (flock.l_type == F_WRLCK) {
printf("flock has been set to write lock by %d\n", flock.l_pid);
}
}

flock.l_type = type;
if (fcntl(fd, F_SETLKW, &flock) < 0) {
printf("set lock failed!\n");
return -1;
}

switch (flock.l_type) {
case F_RDLCK:
printf("read lock is set by %d\n", getpid());
break;
case F_WRLCK:
printf("write lock is set by %d\n", getpid());
break;
case F_UNLCK:
printf("lock is released by %d\n", getpid());
break;
default:
break;
}

printf("pid=%d out.\n", getpid());
return 0;
}

int main(void)
{
int fd;

fd = open(FILE_NAME, O_RDWR|O_CREAT, 0666);
if (fd < 0) {
printf("open file %s failed!\n", FILE_NAME);
}

//flock_set(fd, F_WRLCK);
flock_set(fd, F_RDLCK);
getchar();
flock_set(fd, F_UNLCK);
getchar();

close(fd);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: