如何在bash终端中测试?

时间:2018-03-18 00:31:10

标签: c bash

int filter(int m, int readfd, int writefd)

我有一个名为filter的函数,它接受三个参数:过滤器值m,从中接收整数的文件描述符readfd,以及写入整数的文件描述符writefd。其目的是从数据流中删除(过滤)m的倍数的任何整数。如果完成时函数返回0而没有遇到错误,否则返回1。

如何为输入readfd创建文件描述符?

2 个答案:

答案 0 :(得分:1)

您应该做的是将您的文件放在脚本中进行测试(或单独的脚本)或使用解释器。

testfile.h包含你的功能。

test.c的:

#include "testfile.h"

int main() {

    int x = filter(2, 0, 1);
    if (x == 0) {
        //Do stuff
    }
    else if (x == 1) {
        // Do another thing if there was an error
    else {
        // Do something else
    }
    return 0;
}

使用终端将您的函数编译成可执行文件:

gcc test.c -o test.o
ld test.o test

答案 1 :(得分:1)

open函数将返回一个文件描述符。现在,您可以使用fdopen函数来获取与文件描述符关联的相同流。

int main()
{
    int readfd,writefd,m=0;

    readfd = open("file_name1.txt",O_RDONLY); //open the file in read only mode
    writefd = open("file_name2.txt",O_WRONLY); // open the file in write only mode

    filter(m, readfd, writefd);

}

int filter(int m, int readfd, int writefd)
{
    FILE *fp1,*fp2;

    fp1 = fdopen(readfd,"r");
    fp2 = fdopen(writefd,"w");
}