linux消息序列(进程间通信)

Unix/Linux使用Find命令查找文件

linux信号量(进程间通信)

 

 

 

[cpp] 

寻找空的目录:

将使用一个程序来演示信号量的使用,程序用PV操作控制信号量,以操作临界区,P操作让信号量减1,V操作让信号量加1,而PV操作之间的代码即为临界区关键代码。每次只能由一个进程访问。

#include <stdlib.h>  

  find /path -depth -type d -empty

 

#include <stdio.h>  

  www.2cto.com  

程序创建出一个子进程,在两个进程中分别有一段临界区关键代码,实现的功能都是不断的顺序输出0~9的字符。

#include <string.h>  

  寻找空文件:

 

#include <errno.h>  

  find /path -depth -type f -empty

保证进程间同步

#include <unistd.h>  

 

  www.2cto.com  

#include <sys/types.h>  

  根据名字查找文件:

[plain] 

#include <sys/ipc.h>  

  find /path -name name_of_file

#include <unistd.h>  

#include <sys/msg.h>  

 

#include <stdlib.h>  

    www.2cto.com  

  根据扩展名查找文件:

#include <stdio.h>  

//需要自己定义的消息队列结构  

  find /path -name “*.given_extension”

#include <sys/types.h>  

struct msgStuct  

 

#include <sys/ipc.h>  

{  

  寻找具有特定权限且特定扩展名的文件:

#include <sys/sem.h>  

  long int msgType;  

  find /path -name ‘*.txt’ -perm 644

  

  char strMsg[1024];  

 

static int init_semvalue (int);  

};  

  根据文件具有的权限属性来寻找文件:

static void del_semvalue (int);  

  

  find /path -perm -permision_bits

static int P (int);  

int  

  www.2cto.com  

static int V (int);  

main ()  

  不知道扩展名,只使用文件名来寻找文件:

  

{  

  find /path -name ‘given_name.*’

//自己定义的semun结构体  

  struct msgStuct msg_data;  

 

union semun  

  int msgid;  

  寻找在24小时内修改过的文件:

{  

  char buffer[1024];  

  find /path -mtime n

  int val;  

  //创建一个消息队列  

  这里的n,0表示24小时,1表示48小时,2表示72小时。下面的n也一样。

  struct semid_ds *buf;  

  if ((msgid= msgget ((key_t) 2234, 0666 | IPC_CREAT)) == -1)  

 

  unsigned short *array;  

    {    www.2cto.com  

  查找最近24小时内存取过的文件:

  struct seminfo *__buf;  

      perror (“msgget failed with error: %d\n”);  

  find -atime n  www.2cto.com  

};  

      exit (EXIT_FAILURE);  

 

  

    }  

  根据所有者查找文件:

int  

  while (1)  

  find /path -user root

main (int argc, char *argv[])  

    {  

 

{  

      printf (“Send message: “);  

  查找删除的文件:

  int var_cri = 0;  

      fgets (buffer, 1024, stdin);  

  find /path -name mytestfile | xargs rm

  int sem_id;  

    //初始化消息类型  

iCC Develop Center
 

  pid_t pid;  

      msg_data.msgType = 1;  

寻找空的目录:
find /path -depth -type d -empty www.2cto.com 寻找空文件: find /path
-depth -type f -empty 根据名字查找文件…

    www.2cto.com  

      strcpy (msg_data.strMsg, buffer);  

  //创建一个信号量  

    //发送消息  

  sem_id = semget ((key_t) 2234, 1, 0666 | IPC_CREAT);  

      if (msgsnd (msgid, (void *) &msg_data, 1024, 0) == -1)  

  //初始化一个信号量  

    {  

  if (!init_semvalue (sem_id))  

      fprintf (stderr, “msgsnd failed\n”);  

    {  

      exit (EXIT_FAILURE);  

      fprintf (stderr, “Failed to initialize semaphore!\n”);  

    }  

      exit (EXIT_FAILURE);  

发表评论

电子邮件地址不会被公开。 必填项已用*标注