LINUX.ORG.RU

Сообщения nana2000

 

разные выводы

запустил код на сайте ideone.com

#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>

int main()
{
    int fd[2], result;
    size_t size;
    char resstring[14];

    if(pipe(fd) < 0)
         {
        printf("Can\'t create pipe\n");
        exit(-1);
         }

    result = fork();
    if(result < 0)
        {
        printf("Can\'t fork child\n");
        exit(-1);
         }
    else if (result > 0)
         {
        /* процесс-предок*/
        close(fd[0]);
    printf("Father is going to send a letter to his beloved son...\n");
        size = write(fd[1], "Hello, world!", 14);
        if(size != 14)
            {
            printf("Can\'t write all string\n");
            exit(-1);
            }
        
        close(fd[1]);
    printf("Father wants his letter to reach the final destination.\n");
        printf("Parent exit\n");
         }
    else {
        /* процесс - потомок*/
        close(fd[1]);
    printf("Son decides to check his inbox...\n");    
        size = read(fd[0], resstring, 14);
        if(size < 0)
            {
            printf("Can\'t read string\n");
            exit(-1);
            }
    printf("Son has just recieved a nice letter from his father.\n");
    printf("Here it is:\n");
        printf("\"%s\"\n",resstring);    
        close(fd[0]);
         }    
    getchar();
    return 0;
}
Результат:

Father is going to send a letter to his beloved son...

Father wants his letter to reach the final destination.

Parent exit

Son decides to check his inbox...

Son has just recieved a nice letter from his father.

Here it is:

«Hello, world!»

а когда запустил код под линуксе

такой результат:

Father is going to send a letter to his beloved son...

Son decides to check his inbox...

Father wants his letter to reach the final destination.

Parent exit

Son has just recieved a nice letter from his father.

Here it is:

«Hello, world!»

В чем же проблем?? Мне надо чтобы код запустил под линуксом выдал результат как на сайте ideone.com

т.е

Father is going to send a letter to his beloved son...

Father wants his letter to reach the final destination.

Parent exit

Son decides to check his inbox...

Son has just recieved a nice letter from his father.

Here it is:

«Hello, world!»

Исправьте,плиз

 

nana2000
()

FIFO,write,read

Написать две разные программы, одна из которых пишет информацию в FIFO, а вторая - читает из него. Ни одна из программ никак не связана с другой

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

int main()
{
    int fd;
    size_t size;
    char name[]="aaa.fifo";

    umask(0);
    
    if(mknod(name, S_IFIFO | 0666, 0) < 0)
    {
        if (unlink(name)==-1)
	{
		printf("Can\'t create FIFO\n");
		exit(-1);
	}
	mknod(name, S_IFIFO | 0666, 0);
    }
    
    if ((fd = open(name, O_WRONLY)) < 0)
    {
	printf("Can\'t open FIFO for writing\n");
	exit(-1);
    }
    
    size = write(fd, "Hello, world!", 14);
    
    if (size != 14)
    {
	printf("Can\'t write all string to FIFO\n");
	exit(-1);
    }
    close(fd);
    return 0;
}
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>

int main()
{
	int fd;
	size_t size;
	char resstring[14];
	char name[]="aaa.fifo";
	
	if ((fd = open(name, O_RDONLY)) < 0)
	{
		printf("Can\'t open FIFO for reading\n");
		exit(-1);
	}
   
        size = read(fd, resstring, 14);
	if(size < 0)
	{
		printf("Can\'t read string\n");
		exit(-1);
	}
	printf("%s\n",resstring);
        close(fd);
	return 0;
}

Ну я записывал в первый проге информацию,но почему из второй прог не читается из него

Подскажите,пжлс

 

nana2000
()

Системный вызов open() close()

Создать процесс, создающий 4 файла A, B, C D, отрывающий и закрывающий их следующим образом:

Открыть А, закрыть А; откр. B, закр. B; откр. C, закр. C; откр. D, закр. D.

это мой прог:

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
 
int main(void) {

        int fd_a;
        int fd_b;
        int fd_c;
        int fd_d;

        fd_a = open("baobab.txt", O_CREAT | O_RDWR , 0664);

        if(fd_a == -1) {
                perror("open");
                exit(EXIT_FAILURE);
        }
        close(fd_a);

        if(fd_a == -1) {
                perror("close");
                exit(EXIT_FAILURE);
        }

        ...

        exit(EXIT_SUCCESS);
}

прога рабочая.

Мне кажется ,что мой прог слишком длинная если я буду для каждаго файла писать.

Нелзя ли сделать ее по короче?

Перемещено leave из general

 

nana2000
()

скрипт не работает

мне надо написать скрипт ,которые копируется в заданного каталог исполняемые файлы из другого заданного каталога. Скрипт

#!/bin/bash

echo $1
echo $2

find $1 -type f

while [ -f $1 ]
do 
    if [ -x $1 ]
        then cp $1 $2
    fi
done
Проблем в том,что он только ищет файлы но не копируется его в заданного каталога Скажите,пожалуйста, в чём ошибку

 ,

nana2000
()

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