LINUX.ORG.RU

Сообщения HUGO_GO

 

Ошибка при запуске

Форум — Linux-install

Здраствуйте, паралельно стоят Ubuntu И Windows7. При запуске на экране появилось это:

Try (hd0,0) : Extended :
Try (hd0,0) : invalid or null 
Try (hd0,0) : NTFS5 : error : "prefix" is not set.
Подскажите, пожалуйста, что это, и насколько понимаю это ошибка- как ее исправить?

HUGO_GO
()

Ошибка при запуске

Форум — Linux-hardware

Здраствуйте, паралельно стоят Ubuntu И Windows7. При запуске на экране появилось это:

Try (hd0,0) : Extended :
Try (hd0,0) : invalid or null 
Try (hd0,0) : NTFS5 : error : "prefix" is not set.
Подскажите, пожалуйста, что это, и насколько понимаю это ошибка- как ее исправить?

HUGO_GO
()

Вывести содержание бинарного файла

Форум — Development

Здравствуйте, необходимо вывести содержание бинарного файла mv

len = filesize("/bin/mv");
FILE * f;
f = fopen("/bin/mv", "r");
char* ptr = buf;
while((fread(ptr, 1, 1, f)) > 0)
{
    ptr++;
}
fclose(f);
return len;
хотя в консоли вот так cat /bin/mv выводит. Если работать с head, то «/usr/bin/head» работает(в консоли cat /usr/bin/head )

Вот весь код программы



#define FUSE_USE_VERSION 26

#include <fuse.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <fcntl.h>
#include <stdlib.h>

static const char *bar_path ="/bar";//papka
static const char *foo_path ="/foo";//papka
static const char *bin_path ="/bin";//papka
static const char *baz_path ="/baz";//papka
static const char *example_path ="/bar/example";//file
static const char *example_str = "Hello World\n";
static const char *readmetxt_path ="/bar/readme.txt";//file
static const char *readmetxt_str = "status name surname number \n";
static const char *testtxt_path ="/foo/test.txt";
static const char *testtxt_str = "1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n";//file
static const char *mv_path ="/foo/mv";//file

static char* tempFile = "";
static char* tempContent = ""; 


size_t filesize(const char *filename){
     struct stat st;
     size_t retval=0;
     if(stat(filename,&st) ){
	     printf("cannot stat %s\n",filename);
     }else{
	   retval=st.st_size;
     }
     return retval;
}

static int lab5_getattr(const char *path, struct stat *stbuf)
{
	int res = 0;

	memset(stbuf, 0, sizeof(struct stat));
	if (strcmp(path, "/") == 0) {
		stbuf->st_mode = S_IFDIR | 0717;//755
		stbuf->st_nlink = 2;
	} else if (strcmp(path, bin_path) == 0) {//papka
		stbuf->st_mode = S_IFDIR | 0511;
		stbuf->st_nlink = 2;
	} else if (strcmp(path, foo_path) == 0) {//papka
		stbuf->st_mode = S_IFDIR | 0233;
		stbuf->st_nlink = 2;
	}else if (strcmp(path, bar_path) == 0) {//papka
		stbuf->st_mode = S_IFDIR | 0511;
		stbuf->st_nlink = 2;
	} else if (strcmp(path, baz_path) == 0) {//papka
		stbuf->st_mode = S_IFDIR | 0777;
		stbuf->st_nlink = 2;
	}  else if (strcmp(path, "/bin") == 0) {//v papke papka а в папке папка а в папке еще папка)
		stbuf->st_mode = S_IFDIR | 0007;//144
		stbuf->st_nlink = 2;
	} else if (strcmp(path, "/baz") == 0) {//v papke papka
		stbuf->st_mode = S_IFDIR | 0577;
		stbuf->st_nlink = 2;
	} else if (strcmp(path, "/foo") == 0) {//v papke papka
		stbuf->st_mode = S_IFDIR | 0007;//144
		stbuf->st_nlink = 2;
	
	} else if (strcmp(path, "/bar") == 0) {//v papke papka
		stbuf->st_mode = S_IFDIR | 0007;//144
		stbuf->st_nlink = 2;
	} 
	else if (strcmp(path, example_path) == 0) {
		stbuf->st_mode = S_IFREG | 0222;// file in foo/baz
		stbuf->st_nlink = 1;
		stbuf->st_size = strlen(example_str);
	} else if (strcmp(path, readmetxt_path) == 0) {
		stbuf->st_mode = S_IFREG | 0444;//644
		stbuf->st_nlink = 1;
		stbuf->st_size = strlen(readmetxt_str);
	} else if (strcmp(path, testtxt_path) == 0) {
		stbuf->st_mode = S_IFREG | 0707;//0707
		stbuf->st_nlink = 1;
		stbuf->st_size = strlen(testtxt_str);
	} else if (strcmp(path, mv_path) == 0) {
		stbuf->st_mode = S_IFREG | 0777;//head
		stbuf->st_nlink = 1;
		//stbuf->st_size = strlen(mv_path);
		size_t size = filesize("bin/mv");
		stbuf->st_size = size;
	} else
		res = -ENOENT;

	return res;
}

static int lab5_readdir(const char *path, void *buf, fuse_fill_dir_t filler,
			 off_t offset, struct fuse_file_info *fi)
{
	(void) offset;
	(void) fi;

	if (strcmp(path, "/") == 0) {	
		filler(buf, ".", NULL, 0);
		filler(buf, "..", NULL, 0);
		filler(buf, bin_path + 1, NULL, 0);
        	filler(buf, bar_path + 1, NULL, 0);
		filler(buf, baz_path + 1, NULL, 0);
		filler(buf, foo_path + 1, NULL, 0);
		
	}else if (strcmp(path, bar_path) == 0) {
		filler(buf, ".", NULL, 0);
		filler(buf, "..", NULL, 0);
		filler(buf, "/readme.txt" + 1, NULL, 0);
		filler(buf, "/example" + 1, NULL, 0);
	}else if (strcmp(path, foo_path) == 0) {
		filler(buf, ".", NULL, 0);
		filler(buf, "..", NULL, 0);
		filler(buf, "/mv" + 1, NULL, 0);
		filler(buf, "/test.txt" + 1, NULL, 0);
	}
	else
		return -ENOENT;

	return 0;
}

static int lab5_open(const char *path, struct fuse_file_info *fi)
{
	if ((strcmp(path, example_path) != 0)&&(strcmp(path, readmetxt_path) != 0)&&(strcmp(path, testtxt_path) != 0)&&(strcmp(path, mv_path) != 0))
		return -ENOENT;

	if ((fi->flags & 3) != O_RDONLY)
		return -EACCES;

	return 0;
}

static int lab5_read(const char *path, char *buf, size_t size, off_t offset,
		      struct fuse_file_info *fi)
{
	size_t len;
	(void) fi;
	if(strcmp(path, example_path) == 0)
	{	
		return -EACCES;
	}
	else if(strcmp(path, readmetxt_path) == 0)
	{	
		len = strlen(readmetxt_str);
		if (offset < len) {
			if (offset + size > len)
				size = len - offset;
			memcpy(buf, readmetxt_str + offset, size);
		} else
			size = 0;
		return size;
	}
	else if(strcmp(path, testtxt_path) == 0)
	{	
		len = strlen(testtxt_str);
		if (offset < len) {
			if (offset + size > len)
				size = len - offset;
			memcpy(buf, testtxt_str + offset, size);
		} else
			size = 0;
		return size;
	}
	else if(strcmp(path, mv_path) == 0)
	{
		len = filesize("/bin/mv");
		FILE * f;
		f = fopen("/bin/mv", "r");
		char* ptr = buf;
		while((fread(ptr, 1, 1, f)) > 0)
		{
			ptr++;
		}
		fclose(f);
		return len;
	}
	else
		return -ENOENT;
}


char* memcpu(char* source, char* buf)
{
    int size = strlen(source) + strlen(buf) + 1;   
    char* result = (char*)malloc(sizeof(char)*size);
    result[size - 1] = 0; // ставим отделяющий символ
    int i = 0;
    for(; i < strlen(source); i++) // переносим существующее значение
    {
        result[i] = source[i];
    }
    for(; i < size; i++) // добавляем значение буфера
    {
        result[i] = buf[i - strlen(source)];
    }
    return result; // возвращаем указатель на область памяти . содежращую старые данные и данные , переданные в буфере.
}
static int  d_write(const char *path, const char *buf, size_t size, off_t offset,
              struct fuse_file_info *fi)
{  
    tempFile = path; 
    tempContent = memcpu(tempContent,buf + offset);
    return strlen(buf+offset);
}

static struct fuse_operations hello_oper = {
	.getattr	= lab5_getattr,
	.readdir	= lab5_readdir,
	.open		= lab5_open,
	.write          = d_write,  //пишем данные в открытый файл.
	.read		= lab5_read,
};

int main(int argc, char *argv[])
{
	return fuse_main(argc, argv, &hello_oper, NULL);
}

HUGO_GO
()

FUSE

Форум — Development

Здраствуйте, нужно сделать дерево

-bin
-bar
    -readme.txt
    -example
-baz
-foo
    -mv
    -test.txt
Все норм, вот код


#define FUSE_USE_VERSION 26

#include <fuse.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <fcntl.h>

static const char *bar_path ="/bar";//papka
static const char *foo_path ="/foo";//papka
static const char *bin_path ="/bin";//papka
static const char *baz_path ="/baz";//papka
static const char *example_path ="/bar/example";//file
static const char *example_str = "Hello World\n";
static const char *readmetxt_path ="/bar/readme.txt";//file
static const char *readmetxt_str = "status name surname number \n";
static const char *testtxt_path ="/foo/test.txt";
static const char *testtxt_str = "1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n";//file
static const char *mv_path ="/foo/mv";//file

size_t filesize(const char *filename){
     struct stat st;
     size_t retval=0;
     if(stat(filename,&st) ){
	     printf("cannot stat %s\n",filename);
     }else{
	   retval=st.st_size;
     }
     return retval;
}

static int lab5_getattr(const char *path, struct stat *stbuf)
{
	int res = 0;

	memset(stbuf, 0, sizeof(struct stat));
	if (strcmp(path, "/") == 0) {
		stbuf->st_mode = S_IFDIR | 0717;//755
		stbuf->st_nlink = 2;
	} else if (strcmp(path, bin_path) == 0) {//papka
		stbuf->st_mode = S_IFDIR | 0511;
		stbuf->st_nlink = 2;
	} else if (strcmp(path, foo_path) == 0) {//papka
		stbuf->st_mode = S_IFDIR | 0233;
		stbuf->st_nlink = 2;
	}else if (strcmp(path, bar_path) == 0) {//papka
		stbuf->st_mode = S_IFDIR | 0511;
		stbuf->st_nlink = 2;
	} else if (strcmp(path, baz_path) == 0) {//papka
		stbuf->st_mode = S_IFDIR | 0777;
		stbuf->st_nlink = 2;
	}  else if (strcmp(path, "/bin") == 0) {
		stbuf->st_mode = S_IFDIR | 0007;//144
		stbuf->st_nlink = 2;
	} else if (strcmp(path, "/baz") == 0) {//
		stbuf->st_mode = S_IFDIR | 0577;
		stbuf->st_nlink = 2;
	} else if (strcmp(path, "/foo") == 0) {//
		stbuf->st_mode = S_IFDIR | 0007;//144
		stbuf->st_nlink = 2;
	
	} else if (strcmp(path, "/bar") == 0) {
		stbuf->st_mode = S_IFDIR | 0007;//144
		stbuf->st_nlink = 2;
	} 
	else if (strcmp(path, example_path) == 0) {
		stbuf->st_mode = S_IFREG | 0222;
		stbuf->st_nlink = 1;
		stbuf->st_size = strlen(example_str);
	} else if (strcmp(path, readmetxt_path) == 0) {
		stbuf->st_mode = S_IFREG | 0444;//644
		stbuf->st_nlink = 1;
		stbuf->st_size = strlen(readmetxt_str);
	} else if (strcmp(path, testtxt_path) == 0) {
		stbuf->st_mode = S_IFREG | 0707;//0707
		stbuf->st_nlink = 1;
		stbuf->st_size = strlen(testtxt_str);
	} else if (strcmp(path, mv_path) == 0) {
		stbuf->st_mode = S_IFREG | 0777;//head
		stbuf->st_nlink = 1;
		stbuf->st_size = strlen(mv_path);
		/*size_t size = filesize("/usr/bin/mv");
		stbuf->st_size = size;*/
	} else
		res = -ENOENT;

	return res;
}

static int lab5_readdir(const char *path, void *buf, fuse_fill_dir_t filler,
			 off_t offset, struct fuse_file_info *fi)
{
	(void) offset;
	(void) fi;

	if (strcmp(path, "/") == 0) {	
		filler(buf, ".", NULL, 0);
		filler(buf, "..", NULL, 0);
		filler(buf, bin_path + 1, NULL, 0);
        	filler(buf, bar_path + 1, NULL, 0);
		filler(buf, baz_path + 1, NULL, 0);
		filler(buf, foo_path + 1, NULL, 0);
		
	}else if (strcmp(path, bar_path) == 0) {
		filler(buf, ".", NULL, 0);
		filler(buf, "..", NULL, 0);
		filler(buf, "/readme.txt" + 1, NULL, 0);
		filler(buf, "/example" + 1, NULL, 0);
	}else if (strcmp(path, foo_path) == 0) {
		filler(buf, ".", NULL, 0);
		filler(buf, "..", NULL, 0);
		filler(buf, "/mv" + 1, NULL, 0);
		filler(buf, "/test.txt" + 1, NULL, 0);
	}
	else
		return -ENOENT;

	return 0;
}

static int lab5_open(const char *path, struct fuse_file_info *fi)
{
	if ((strcmp(path, example_path) != 0)&&(strcmp(path, readmetxt_path) != 0)&&(strcmp(path, testtxt_path) != 0)&&(strcmp(path, mv_path) != 0))
		return -ENOENT;

	if ((fi->flags & 3) != O_RDONLY)
		return -EACCES;

	return 0;
}

static int lab5_read(const char *path, char *buf, size_t size, off_t offset,
		      struct fuse_file_info *fi)
{
	size_t len;
	(void) fi;
	if(strcmp(path, example_path) == 0)
	{	
		return -EACCES;
	}
	else if(strcmp(path, readmetxt_path) == 0)
	{	
		len = strlen(readmetxt_str);
		if (offset < len) {
			if (offset + size > len)
				size = len - offset;
			memcpy(buf, readmetxt_str + offset, size);
		} else
			size = 0;
		return size;
	}
	else if(strcmp(path, testtxt_path) == 0)
	{	
		len = strlen(testtxt_str);
		if (offset < len) {
			if (offset + size > len)
				size = len - offset;
			memcpy(buf, testtxt_str + offset, size);
		} else
			size = 0;
		return size;
	}
	else if(strcmp(path, mv_path) == 0)
	{
		len = filesize("/usr/bin/mv");
		FILE * f;
		f = fopen("/usr/bin/mv", "r");
		char* ptr = buf;
		while((fread(ptr, 1, 1, f)) > 0)
		{
			ptr++;
		}
		fclose(f);
		return len;
	}
	else
		return -ENOENT;
}

static struct fuse_operations hello_oper = {
	.getattr	= lab5_getattr,
	.readdir	= lab5_readdir,
	.open		= lab5_open,
	.read		= lab5_read,
};

int main(int argc, char *argv[])
{
	return fuse_main(argc, argv, &hello_oper, NULL);
}

но выводит :


-bar
    -readme.txt
    -example
-baz
-bin
-foo
    -mv
    -test.txt
Скажите, пожалуйста, где ошибка?

HUGO_GO
()

Читатели/писатели

Форум — Development

Класическая задача синхронизации. Есть общий ресурс, из которого можно читать и писать, есть читатели и есть писатели... Чтение может происходить несколькими нитями одновременно. Когда какая-то из нитей производит запись, остальные нити не должны иметь доступа к ресурсу.

Только небольшая нароботка, но она не работает. Скажите, пожалуйста, в чем ошибка?


#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/sem.h>
#include <sys/wait.h>
//#include <signal.h>


int readcount = 0, writecount; 
semaphore x = 1, y=1, z=1, rsem = 1, wsem = 1;


void reader() 
{ 
 while(true)
     { 
      wait(z); 
      wait(rsem);
      wait(x); 
      readcount++;
      if (readcount==1) wait(wsem); 
      signal(x); 
      signal(rsem); 
      signal(z); 
      READUNIT(); 
      wait(x);
      readcount--; 
      if (readcount==0) signal(wsem); 
      signal (x); 
      }
 } 
void writer()
 { 
   while(true)
     {
 	wait(y);
	writecount++; 
 	if (writecount==1) wait(rsem);
 	signal(y); 
	wait(wsem);
 	WRITEUNITO;
 	signal(wsem); 
	wait(y);
 	writecount--;
 	if (writecount==0) signal(rsem);
 	signal(y);
 }
 }


 void main () 
{

 readcount = writecount = 0; 
 parbegin(reader, writer);
 }

HUGO_GO
()

Sort

Форум — Development

Здраструйте, задантие- написать програму на С, которая использует стандартые утилиты Bash(cat, grep, sort). Проблема не работает sort. Ошибка скорее всего в синтаксисе sort, но где і как правильно?

#include <sys/types.h>

#include <unistd.h>

#include <stdio.h>

#include <stdlib.h>

//#include <stream>


int main()

{

    int status;

    int fd1[2], fd2[2], fd3[2], fd4[2], fd5[2], fd6[2], fd7[2];


    pipe(fd1);    pipe(fd2);    pipe(fd3);    pipe(fd4);

    pipe(fd5);    pipe(fd6);    pipe(fd7);





    pid_t pid1 = fork();

    if (pid1!=0)

    {

                    
        char* command1[3] = {"cat", "log.txt", NULL};

        dup2(fd1[1],1);//to

        //close(pipe_fd1[1]);


        execvp (command1[0],command1);

    }


    pid_t pid2 = fork();

    if (pid2!=0)

    {

        char* command2[6]={"cut", "-f", "9,7", "-d", " ", NULL};


        dup2(fd1[0], 0);//from

        close(fd1[0]);//witout this two model

         dup2(fd2[1], 1);       

        close(fd2[1]);//ones two collums, another jnly 10


        execvp (command2[0], command2);

     }


    pid_t pid3 = fork();

    if (pid3!=0)

    {

        char* command3[4]={"/bin/grep", "404" , NULL};

        dup2(fd2[0], 0);//from

        close(fd2[0]);

        dup2(fd3[1], 1);       

        //close(fd3[1]);

        execvp (command3[0], command3);

     }

    pid_t pid4 = fork();

    if (pid4!=0)

    {

        char* command4[3]={ "sort","1" ,NULL};

        dup2(fd3[0], 0);

        //dup2(fd4[1], 1);

        execvp (command4[0], command4);//command4[0]

     }

return 0;

}
HUGO_GO
()

Bash- top 10

Форум — Development

Топ-10 URL, которые вызвали ошибки клиента (код ответа начинается с 4) ;Количество ошибок для каждой из них как число Количество ошибок для аждой из них как процент от общего количества ошибок для этих URL Результат в таком виде: 1. http://vrtvw.example.brg/example/ - 50 - 50% сделано почти все, кроме процентов, помогите! Код: #!/bin/bash

echo 'TOP 10 '

echo 'IV. Top 10 URLs that return error codes:' echo 'count code URL' #grep '\" [4]0[0-9]' log.txt | cut -f11,9 -d' ' | sort | uniq -c| sort -nr | head | >7.txt #grep '\" [4]0[0-9]' log.txt | cut -f11,9 -d' ' | sort | sort -nr | head #echo " cat log.txt | cut -f11,9 -d' ' | grep ^4 | sort | uniq -c | sort -nr | head | sed -e 's/ //g' | sed -e 's/ //g' | sed -e 's/ //g' | cut -f1 -d' ' > 7.txt cat 7.txt | awk '{ SUM += $1 } END { print SUM }' > 8.txt s=` cat 8.txt | awk '{print $1}'`; echo $s echo "

а дальне незнаю как((

HUGO_GO
()

RSS подписка на новые темы