我正在读K&R的C编程,我刚刚开始了最后一章:Unix系统接口。我遇到了一个文件复制代码,它可以进行系统调用。首先,我在codeblocks windows中编译了代码,得到一个没有找到dir/file的错误,然后我想我应该在linux中编译这段代码。但我在之后又犯了同样的错误。
我在StackOverflow上读到了其他一些问题:
更新源
然后再次安装Linux头文件
阅读一些使用syscall.h的地方,但是bufsiz没有在其中定义,我认为这本书没有错。

#include "syscalls.h"

int main()
{
    char buf[BUFSIZ];
    int n;
    while((n = read(0, buf, BUFSIZ)) > 0)
    write(1, buf, n);
    return 0;
}

最佳答案

#include <unistd.h>
#include<stdio.h>
main()
{
char buf[BUFSIZ];
int n;
while((n = read(0,buf,BUFSIZ))>0)
     write(1,buf,n); //Output to the Console
return 0;
}

编辑:unistd.h可以使用。也修正了打字错误!
输出:
myunix:/u/mahesh> echo "Hi\nWorld" | a.out
Hi
World

07-24 09:44