实验1

翻译 2015年11月18日 17:29:06

#include <stdio.h>

int main()

{

  printf("hello world");

  return 0;

}

 

#include <stdio.h>

#include <sys/types.h>

#include <unistd.h>

#include <fcntl.h>

#include <sys/stat.h>

#include <stdlib.h>

/*struct flock

{

  short 1_type;

  off_t 1_start;

  short 1_whence;

  off_t 1_len;

  pid_t 1_pid;

}old_lock,lock;*/

 

int lock_set(int fd,int type)

{

  struct flock old_lock,lock;

  lock.l_whence = SEEK_SET;  //相对位移量的起点:当前位置为文件开头

  lock.l_start = 0;     //加锁区域的相对位移量

  lock.l_len = 0;     //加锁区域长度

  lock.l_type = type;   //锁的类型

  lock.l_pid = -1;      //记录持有锁的进程

 

  fcntl(fd,F_GETLK,&lock);  //fd;根据参数3决定文件是否上锁;struct flock:记录锁的具体状态   总:判断文件是否可以上锁

  if(lock.l_type != F_UNLCK)

   {

     if(lock.l_type == F_RDLCK)    //读取锁(共享锁)

     {

         printf("Read lock already set by %d\n",lock.l_pid);

     }

     else if(lock.l_type == F_WRLCK)   //写入锁(排斥锁)

     {

         printf("Write lock already set by %d\n",lock.l_pid);

     }

   }

 

lock.l_type = type;   //l_type的值可能已被F_GETLK修改过

 

if((fcntl(fd,F_SETLKW,&lock)) < 0)    //阻塞式上锁

{

  printf("Lock failed:type = %d\n",lock.l_type);

  return 1;

}

 

switch(lock.l_type)

{

  case F_RDLCK:

   {

     printf("Read lock set by %d\n",getpid());

   }

  break;

  case F_WRLCK:

   {

      printf("Write lock set by%d\n",getpid());

   }

  break;

  case F_UNLCK:

   {

     printf("Release lock by %d\n",getpid());

     return 1;

   }

  break;

  default:

  break;

}

  return 0;

}

 

写入锁函数1:

int main(void)

{

   int fd;

   fd = open("hello.c",O_RDWR|O_CREAT,0644);

   if(fd<0)

   {

      printf("open file error\n");

      exit(1);

   }

 

   lock_set(fd,F_WRLCK);   //给文件写入锁

   getchar();

 

   lock_set(fd,F_UNLCK);   //给文件解锁

   getchar();

 

   close(fd);

   exit(0);

 

读取锁函数2:

int main(void)

{

   int fd;

   fd =open("hello.c",O_RDWR|O_CREAT,0644);

   if(fd<0)

   {

      printf("open file error\n");

      exit(1);

   }

 

   lock_set(fd,F_RDLCK);//给文件读取锁

   getchar();

 

   lock_set(fd,F_UNLCK);//给文件解锁

   getchar();

 

   close(fd);

   exit(0);

}

}

相关文章推荐

串口实验_STM32F1开发指南_第九章——串口学习笔记

串口实验_STM32F1开发指南_第九章——串口学习笔记

USB虚拟串口实验_STM32F1开发指南_第五十三章——USB学习笔记

USB虚拟串口实验_STM32F1开发指南_第五十三章——USB学习笔记

实验报告 13--1

#include using namespace std; class Vehicle { public:  void run() const { cout }; class...

哈工大编译原理实验1——词法分析

设计实现类高级语言的词法分析器,基本功能如下: (1)    能识别以下几类单词: 标识符(由大小写字母、数字以及下划线组成,但必须以字母或者下划线开头) 关键字(①类型关键字:整型、浮点型、布...

第7周实验报告1

实验目的:学会使用静态数据成员和静态成员函数 * 程序头部注释开始 * 程序的版权和版本声明部分 * 烟台大学计算机学院学生 * 文件名称:         静态数据成员和静态成员函数 &...

实验5-1 while循环结构

实验目的: 1.熟悉while循环结构 2.使用while循环结构 实验步骤: 1.if选择结构与while循环结构 1.1下面两个流程图有何区别与联系。 1) 2) 2.2分...
  • stunt
  • stunt
  • 2012-03-03 22:12
  • 477

《C++第十六周实验报告3-1》---电子词典

/* 【任务 3】电子词典 做一个简单的电子词典。在文件 dictionary.txt 中,保存的是英汉对照的一个词典,词汇量近 8000 个, 英文、中文释义与词性间用’\t’隔开。建一个表示...

数据结构上机实验(1) 顺序线性表

#include "stdafx.h" #include "malloc.h" #include "stdlib.h"#define OK 1 #define ERROR 0 #define TRUE...

C++第1次实验--复习 (2016-03-11) 循环T1

一、问题及代码: /* * 文件名称: 01.c * 作 者: 郭宇辉 * 完成日期:2016 年 03 月 11 日 * 版 本 号:v6.0 * 对任务及求解方法的描述部分: ...

第十六周实验--任务1--涨工资--从文件salary.txt 中读入500 名工人的工资--学会ASCII文件的操作

/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称:设计一...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)