Linux编程题(采纳再加100)

Linux编程题(采纳再加100),第1张

我这里正好有一个类似的程序,改了一下,看看能否满足需要吧

//file: read_write_fifo.c

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

#include <fcntl.h> 

#include <errno.h>

#include <sys/stat.h>

int main(int argc,char **argv)

{

    int fd

    int len = 0

    char read_buf[1024]

    char write_buf[1024]

    pid_t pid

    int status = 0

    

    if(mkfifo("fifo1", 0666) < 0 && errno!=EEXIST) // 创建FIFO管道

        perror("Create FIFO Failed")

    

    if((pid = fork()) < 0)  // 创建子进程

     perror("Fork error\n")

    else if (pid == 0)

    {

        if((fd = open("fifo1", O_WRONLY)) < 0) // 以写打开一个FIFO

        {

            perror("Open FIFO Failed")

            exit(1)

        }

        while(1)

        {

            printf("Child send:")

            scanf("%s",write_buf)

            if(!strcmp(write_buf,"quit"))

            {

                close(fd)

                exit(0)

            }  

            if(write(fd, write_buf, 1024) < 0)  // 写入到FIFO中

            {

                perror("Write FIFO Failed")

                close(fd)

                exit(1)

            }

        usleep(100)

        }        

    }

    if((fd = open("fifo1", O_RDONLY)) < 0)  // 以读打开FIFO

    {   

        perror("Open FIFO Failed")

        exit(1)

    }   

    while(waitpid(pid, &status, WNOHANG) == 0)

    {   

        len = read(fd, read_buf, 1024) // 读取FIFO管道

        if(len > 0)

            printf("Father recv: %s\n", read_buf)

    }   

   

    close(fd)  // 关闭FIFO文件

    return 0

}

先占下楼层,空了慢慢给你做!

先做第一题1月12日:

#!/bin/bash

echo this "date" :`date`

echo this "cal" :`cal`

echo this "pwd" :`pwd`

echo this "ls" : `ls`.

第二题1月12日:

这个没法写了撒 太笼统;建议翻翻书。

我列个环境变量的例子吧:

#!/bin/bash

echo "第二题":

TEST_DIR=/root

export $TEST_DIR

echo "环境变量TEST_DIR是/root".

第三题1月12日:

#!/bin/bash

echo "第三题for":

echo "3.1 for"

x=0

for ((i=1 i<101 i++))

do

x=$(($x+$i))

done

echo $x

echo "---------------------------------"

echo "第三题while":

echo "3.2 while"

x=0

i=1

while [ $i -lt 101 ]

do

i=$(($i+1))

x=$(($x+$i))

done

echo $x

第三题第二个

#!/bin/bash

echo "3.2"

function fib {

if [ $1 -lt 2 ]then

echo -n $1

else

local n_2=$(($1 - 2))

local n_1=$(($1 - 1))

local f_n_2=$(fib $n_2)

local f_n_1=$(fib $n_1)

local f_n=$((f_n_2 + f_n_1))

echo -n $f_n

fi

}

n=10

for ((i = 0i <$ni++))

do

printf "fib(%2d) = %d\n" $i $(fib $i)

done


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7392222.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-05
下一篇 2023-04-05

发表评论

登录后才能评论

评论列表(0条)

保存